diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igc/igc_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc_main.c | 9 | 
1 files changed, 9 insertions, 0 deletions
| diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 7ac9597ddb84..4d989ebc9713 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -3831,10 +3831,19 @@ static void igc_reset_task(struct work_struct *work)  	adapter = container_of(work, struct igc_adapter, reset_task); +	rtnl_lock(); +	/* If we're already down or resetting, just bail */ +	if (test_bit(__IGC_DOWN, &adapter->state) || +	    test_bit(__IGC_RESETTING, &adapter->state)) { +		rtnl_unlock(); +		return; +	} +  	igc_rings_dump(adapter);  	igc_regs_dump(adapter);  	netdev_err(adapter->netdev, "Reset adapter\n");  	igc_reinit_locked(adapter); +	rtnl_unlock();  }  /** |