Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 Feb 2020 23:02:53 +0000
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Hans Petter Selasky <hps@selasky.org>, freebsd-net <freebsd-net@freebsd.org>
Subject:   Re: Does sosend() need CURVNET_SET/CURVNET_RESTORE?
Message-ID:  <YTBPR01MB3374AD4F73FF001D9D924F05DD000@YTBPR01MB3374.CANPRD01.PROD.OUTLOOK.COM>
In-Reply-To: <6ba3e3bd-d844-e685-7062-339e57438748@selasky.org>
References:  <YTBPR01MB337446173B7D480145BBB6C6DD010@YTBPR01MB3374.CANPRD01.PROD.OUTLOOK.COM>, <6ba3e3bd-d844-e685-7062-339e57438748@selasky.org>

next in thread | previous in thread | raw e-mail | index | archive | help

Hans Petter Selasky wrote:
>On 2020-02-02 22:22, Rick Macklem wrote:
>> Hi,
>>
>> The current krpc code calls sosend() and soreceive() without any
>> CURVNET_SET()/CURVNET_RESTORE() wrapped around them.
>>
>> When I recently used sosend_generic(), it panic'd without them.
>>
>> Do they need to be added around sosend()/soreceive()?
>>
>> I'll admit to knowing nothing about vnet.
>>
>> Thanks, rick
>
>What is the panic backtrace?
I'd have to do it again to find out...

>Usually one of these tree variants is used:
>
>CURVNET_SET(TD_TO_VNET(td));
>CURVNET_SET(ifp->if_vnet);
>CURVNET_SET(so->so_vnet);
I got rid of the panic by adding the third one, which is what I now see
sosend() uses.
However, if sosend() is calling sosend_generic(), I'll just call sosend(),
which takes care of it.

Thanks for your help, rick

--HPS





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YTBPR01MB3374AD4F73FF001D9D924F05DD000>