]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
vlan: Fix panic when vnet jail with a vlan interface is destroyed
authorKristof Provost <kp@FreeBSD.org>
Fri, 31 Jan 2020 22:54:44 +0000 (22:54 +0000)
committerKristof Provost <kp@FreeBSD.org>
Fri, 31 Jan 2020 22:54:44 +0000 (22:54 +0000)
commiteb03a443254c61f0b043c74f9671455e16919148
treef979622d18cbcd319a8ce0d154fcfa444d961e38
parent915c367e8e9b718e5146401375d2188f14d39ac3
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.
sys/net/if_vlan.c