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