mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Don't hold state lock while detaching network device instance in mlx4en(4).
It can happen during shutdown that the lock will recurse when the mlx4en(4) instance is part of a lagg interface. Call ether_ifdetach() unlocked. Backtrace: panic(): _sx_xlock_hard: recursed on non-recursive sx &mdev->state_lock _sx_xlock_hard() _sx_xlock() mlx4_en_ioctl() if_setlladdr() lagg_port_destroy() lagg_port_ifdetach() if_detach() mlx4_en_destroy_netdev() mlx4_en_remove() mlx4_remove_device() mlx4_unregister_device() mlx4_unload_one() mlx4_shutdown() linux_pci_shutdown() bus_generic_shutdown() MFC after: 1 week Sponsored by: Mellanox Technologies
This commit is contained in:
parent
1cd7081eb1
commit
e0ba1be6d7
1 changed files with 1 additions and 4 deletions
|
|
@ -1779,11 +1779,8 @@ void mlx4_en_destroy_netdev(struct net_device *dev)
|
|||
EVENTHANDLER_DEREGISTER(vlan_unconfig, priv->vlan_detach);
|
||||
|
||||
/* Unregister device - this will close the port if it was up */
|
||||
if (priv->registered) {
|
||||
mutex_lock(&mdev->state_lock);
|
||||
if (priv->registered)
|
||||
ether_ifdetach(dev);
|
||||
mutex_unlock(&mdev->state_lock);
|
||||
}
|
||||
|
||||
mutex_lock(&mdev->state_lock);
|
||||
mlx4_en_stop_port(dev);
|
||||
|
|
|
|||
Loading…
Reference in a new issue