--- l/drivers/net/ethernet/intel/e1000/e1000_main.c +++ e/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -3509,7 +3509,11 @@ static void e1000_reset_task(struct work container_of(work, struct e1000_adapter, reset_task); e_err(drv, "Reset adapter\n"); + while (test_and_set_bit(__E1000_RESETTING, &adapter->flags)) + msleep(1); rtnl_lock(); + clear_bit(__E1000_RESETTING, &adapter->flags); + smp_mb(); e1000_reinit_locked(adapter); rtnl_unlock(); }