mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 03:33:59 +08:00
sky2: Lock transmit queue while disabling device
netif_device_detach() does not take the tx_lock, so it's possible that a call to sky2_xmit_frame is still in progress after netif_device_detach() is complete. Take netif_tx_lock() to make sure all transmits have stopped while we're disabling the devices and that no other CPU is still transmitting a frame after we've disabling the device. Proposed fix for "sky2 panic under load" reported by Berck E. Nash. Signed-off-by: Mike McCormack <mikem@ring3k.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c32bbff81c
commit
c36531b9b2
@ -3176,7 +3176,9 @@ static void sky2_reset(struct sky2_hw *hw)
|
||||
static void sky2_detach(struct net_device *dev)
|
||||
{
|
||||
if (netif_running(dev)) {
|
||||
netif_tx_lock(dev);
|
||||
netif_device_detach(dev); /* stop txq */
|
||||
netif_tx_unlock(dev);
|
||||
sky2_down(dev);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user