diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igb/igb_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/igb/igb_main.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 8bb3db2cbd41..6e5861bfb0fa 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -6224,9 +6224,18 @@ static void igb_reset_task(struct work_struct *work)  	struct igb_adapter *adapter;  	adapter = container_of(work, struct igb_adapter, reset_task); +	rtnl_lock(); +	/* If we're already down or resetting, just bail */ +	if (test_bit(__IGB_DOWN, &adapter->state) || +	    test_bit(__IGB_RESETTING, &adapter->state)) { +		rtnl_unlock(); +		return; +	} +  	igb_dump(adapter);  	netdev_err(adapter->netdev, "Reset adapter\n");  	igb_reinit_locked(adapter); +	rtnl_unlock();  }  /**  | 
