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 <ma...@freebsd.org>
AuthorDate: 2024-10-19 13:03:56 +0000
Commit:     Mark Johnston <ma...@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


Reply via email to