Commit 8b638160 authored by Taehee Yoo's avatar Taehee Yoo Committed by David S. Miller
Browse files

ixgbe: fix possible deadlock in ixgbe_service_task()



ixgbe_service_task() calls unregister_netdev() under rtnl_lock().
But unregister_netdev() internally calls rtnl_lock().
So deadlock would occur.

Fixes: 59dd45d5 ("ixgbe: firmware recovery mode")
Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 703acf62
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -7897,11 +7897,8 @@ static void ixgbe_service_task(struct work_struct *work)
		return;
	}
	if (ixgbe_check_fw_error(adapter)) {
		if (!test_bit(__IXGBE_DOWN, &adapter->state)) {
			rtnl_lock();
		if (!test_bit(__IXGBE_DOWN, &adapter->state))
			unregister_netdev(adapter->netdev);
			rtnl_unlock();
		}
		ixgbe_service_event_complete(adapter);
		return;
	}