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: 59dd45d550
("ixgbe: firmware recovery mode")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
703acf6259
Коммит
8b6381600d
|
@ -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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче