Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Oct 2024 10:03:03 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        Mark Johnston <markj@freebsd.org>, src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
Subject:   Re: git: f4e35c044c89 - main - bus: Set the current VNET in device_attach()
Message-ID:  <1e519577-35cb-499e-8e41-57d93f78f8ee@FreeBSD.org>
In-Reply-To: <ZxPaDc7jAORhM5O6@kib.kiev.ua>
References:  <202410191304.49JD4JoM084001@gitrepo.freebsd.org> <ed434405-26cc-4363-834e-9f31d7912589@FreeBSD.org> <ZxPaDc7jAORhM5O6@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On 10/19/24 12:10, Konstantin Belousov wrote:
> On Sat, Oct 19, 2024 at 11:36:32AM -0400, John Baldwin wrote:
>> On 10/19/24 09:04, Mark Johnston wrote:
>>> The branch main has been updated by markj:
>>>
>>> URL: https://cgit.FreeBSD.org/src/commit/?id=f4e35c044c8988b7452cefbdcc417f5fd723e021
>>>
>>> commit f4e35c044c8988b7452cefbdcc417f5fd723e021
>>> Author:     Mark Johnston <markj@FreeBSD.org>
>>> AuthorDate: 2024-10-19 13:03:56 +0000
>>> Commit:     Mark Johnston <markj@FreeBSD.org>
>>> CommitDate: 2024-10-19 13:03:56 +0000
>>>
>>>       bus: Set the current VNET in device_attach()
>>>       Some drivers, in particular anything which creates an ifnet during
>>>       attach, need to have the current VNET set, as if_attach_internal() and
>>>       its callees access VNET-global variables.
>>>       device_probe_and_attach() handles this, but this is not the only way to
>>>       arrive in DEVICE_ATTACH.  In particular, bus drivers may invoke
>>>       device_attach() directly, as does devctl2's DEV_ENABLE ioctl handler.
>>>       So, set the current VNET in device_attach() instead.
>>>       I believe it is always safe to use vnet0, as devctl2 ioctls are not
>>>       permitted within a jail.
>>>       PR:             282168
>>>       Reviewed by:    zlei, kevans, bz, imp, glebius
>>>       MFC after:      1 week
>>>       Differential Revision:  https://reviews.freebsd.org/D47174
>>
>> Hmm, there was some other review I thought that had a completely different change.
>> That change removed all the vnet stuff from new-bus and instead handled it in
>> if.c.  Specifically, that if_attach would set a default vnet to vnet0 if there
>> wasn't an active vnet at the time.  See all the discussion in
>> https://reviews.freebsd.org/D42678 which has a patch that I think is correct
>> in the comments.
>>
> In fact, I think that bus level is better.  At least, I know that detach
> also might need something by vnet (e.g. mce(4) needs to clear the IPSEC
> offload database on detach, although it still does not do).

During detach your ifnet has if_vnet and it needs to use that (and only that,
not vnet0).  new-bus can't know about if_vnet so can't set curvnet correctly.

-- 
John Baldwin




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1e519577-35cb-499e-8e41-57d93f78f8ee>