[e1000] cancel watchdog task in ecdev mode on removal

This commit is contained in:
Bjarne von Horn 2024-02-07 12:16:49 +01:00
parent 81bbf7dbc4
commit bd94f4bb88
5 changed files with 20 additions and 20 deletions

View File

@ -528,9 +528,7 @@ static void e1000_down_and_stop(struct e1000_adapter *adapter)
{
set_bit(__E1000_DOWN, &adapter->flags);
if (!adapter->ecdev) {
cancel_delayed_work_sync(&adapter->watchdog_task);
}
cancel_delayed_work_sync(&adapter->watchdog_task);
/*
* Since the watchdog task can reschedule other tasks, we should cancel
@ -1329,12 +1327,14 @@ static void e1000_remove(struct pci_dev *pdev)
struct e1000_hw *hw = &adapter->hw;
bool disable_dev;
if (adapter->ecdev)
irq_work_sync(&adapter->ec_watchdog_kicker);
e1000_down_and_stop(adapter);
e1000_release_manageability(adapter);
if (adapter->ecdev) {
ecdev_close(adapter->ecdev);
irq_work_sync(&adapter->ec_watchdog_kicker);
ecdev_withdraw(adapter->ecdev);
} else {
unregister_netdev(netdev);

View File

@ -497,9 +497,7 @@ static void e1000_down_and_stop(struct e1000_adapter *adapter)
{
set_bit(__E1000_DOWN, &adapter->flags);
if (!adapter->ecdev) {
cancel_delayed_work_sync(&adapter->watchdog_task);
}
cancel_delayed_work_sync(&adapter->watchdog_task);
/*
* Since the watchdog task can reschedule other tasks, we should cancel
@ -1310,12 +1308,14 @@ static void e1000_remove(struct pci_dev *pdev)
struct e1000_hw *hw = &adapter->hw;
bool disable_dev;
if (adapter->ecdev)
irq_work_sync(&adapter->ec_watchdog_kicker);
e1000_down_and_stop(adapter);
e1000_release_manageability(adapter);
if (adapter->ecdev) {
ecdev_close(adapter->ecdev);
irq_work_sync(&adapter->ec_watchdog_kicker);
ecdev_withdraw(adapter->ecdev);
} else {
unregister_netdev(netdev);

View File

@ -497,9 +497,7 @@ static void e1000_down_and_stop(struct e1000_adapter *adapter)
{
set_bit(__E1000_DOWN, &adapter->flags);
if (!adapter->ecdev) {
cancel_delayed_work_sync(&adapter->watchdog_task);
}
cancel_delayed_work_sync(&adapter->watchdog_task);
/*
* Since the watchdog task can reschedule other tasks, we should cancel
@ -1310,12 +1308,14 @@ static void e1000_remove(struct pci_dev *pdev)
struct e1000_hw *hw = &adapter->hw;
bool disable_dev;
if (adapter->ecdev)
irq_work_sync(&adapter->ec_watchdog_kicker);
e1000_down_and_stop(adapter);
e1000_release_manageability(adapter);
if (adapter->ecdev) {
ecdev_close(adapter->ecdev);
irq_work_sync(&adapter->ec_watchdog_kicker);
ecdev_withdraw(adapter->ecdev);
} else {
unregister_netdev(netdev);

View File

@ -497,9 +497,7 @@ static void e1000_down_and_stop(struct e1000_adapter *adapter)
{
set_bit(__E1000_DOWN, &adapter->flags);
if (!adapter->ecdev) {
cancel_delayed_work_sync(&adapter->watchdog_task);
}
cancel_delayed_work_sync(&adapter->watchdog_task);
/*
* Since the watchdog task can reschedule other tasks, we should cancel
@ -1310,12 +1308,14 @@ static void e1000_remove(struct pci_dev *pdev)
struct e1000_hw *hw = &adapter->hw;
bool disable_dev;
if (adapter->ecdev)
irq_work_sync(&adapter->ec_watchdog_kicker);
e1000_down_and_stop(adapter);
e1000_release_manageability(adapter);
if (adapter->ecdev) {
ecdev_close(adapter->ecdev);
irq_work_sync(&adapter->ec_watchdog_kicker);
ecdev_withdraw(adapter->ecdev);
} else {
unregister_netdev(netdev);

View File

@ -497,9 +497,7 @@ static void e1000_down_and_stop(struct e1000_adapter *adapter)
{
set_bit(__E1000_DOWN, &adapter->flags);
if (!adapter->ecdev) {
cancel_delayed_work_sync(&adapter->watchdog_task);
}
cancel_delayed_work_sync(&adapter->watchdog_task);
/*
* Since the watchdog task can reschedule other tasks, we should cancel
@ -1310,12 +1308,14 @@ static void e1000_remove(struct pci_dev *pdev)
struct e1000_hw *hw = &adapter->hw;
bool disable_dev;
if (adapter->ecdev)
irq_work_sync(&adapter->ec_watchdog_kicker);
e1000_down_and_stop(adapter);
e1000_release_manageability(adapter);
if (adapter->ecdev) {
ecdev_close(adapter->ecdev);
irq_work_sync(&adapter->ec_watchdog_kicker);
ecdev_withdraw(adapter->ecdev);
} else {
unregister_netdev(netdev);