svn commit: r357356 - head/sys/net
Kristof Provost
kp at FreeBSD.org
Fri Jan 31 22:54:44 UTC 2020
Author: kp
Date: Fri Jan 31 22:54:44 2020
New Revision: 357356
URL: https://svnweb.freebsd.org/changeset/base/357356
Log:
vlan: Fix panic when vnet jail with a vlan interface is destroyed
During vnet cleanup vnet_if_uninit() checks that no more interfaces remain in
the vnet. Any interface borrowed from another vnet is returned by
vnet_if_return(). Other interfaces (i.e. cloned interfaces) should have been
destroyed by their cloner at this point.
The if_vlan VNET_SYSUNINIT had priority SI_ORDER_FIRST, which means it had
equal priority as vnet_if_uninit(). In other words: it was possible for it to
be called *after* vnet_if_uninit(), which would lead to assertion failures.
Set the priority to SI_ORDER_ANY, like other cloners to ensure that vlan
interfaces are destroyed before we enter vnet_if_uninit().
The sys/net/if_vlan test provoked this.
Modified:
head/sys/net/if_vlan.c
Modified: head/sys/net/if_vlan.c
==============================================================================
--- head/sys/net/if_vlan.c Fri Jan 31 22:21:15 2020 (r357355)
+++ head/sys/net/if_vlan.c Fri Jan 31 22:54:44 2020 (r357356)
@@ -921,7 +921,7 @@ vnet_vlan_uninit(const void *unused __unused)
if_clone_detach(V_vlan_cloner);
}
-VNET_SYSUNINIT(vnet_vlan_uninit, SI_SUB_INIT_IF, SI_ORDER_FIRST,
+VNET_SYSUNINIT(vnet_vlan_uninit, SI_SUB_INIT_IF, SI_ORDER_ANY,
vnet_vlan_uninit, NULL);
#endif
More information about the svn-src-all
mailing list