diff options
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/netdev.c')
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/netdev.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index e9b82c209c2d..a0948002ddf8 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c @@ -5974,15 +5974,19 @@ static void e1000_reset_task(struct work_struct *work)  	struct e1000_adapter *adapter;  	adapter = container_of(work, struct e1000_adapter, reset_task); +	rtnl_lock();  	/* don't run the task if already down */ -	if (test_bit(__E1000_DOWN, &adapter->state)) +	if (test_bit(__E1000_DOWN, &adapter->state)) { +		rtnl_unlock();  		return; +	}  	if (!(adapter->flags & FLAG_RESTART_NOW)) {  		e1000e_dump(adapter);  		e_err("Reset adapter unexpectedly\n");  	}  	e1000e_reinit_locked(adapter); +	rtnl_unlock();  }  /** |