Fixed missing protection for a spin_lock_irqrestore() call.

This commit is contained in:
Florian Pose 2008-07-28 08:28:42 +00:00
parent 369852b938
commit 2d63291b35
4 changed files with 11 additions and 3 deletions

2
NEWS
View File

@ -87,6 +87,8 @@ Changes in version 1.4.0:
Hassan.
- Fixed unnecessary watchdog executions in e1000 drivers (thanks to
Olav Zarges).
- Fixed missing protection for a spin_lock_irqrestore() call in e1000
drivers from 2.6.20 to 2.6.24 (thanks to Olav Zarges).
* Removed the "bus validation" routines. Slave scanning is now done any time
the bus topology changes, even during realtime operation. Because of this,
the bus_tainted flag was deprecated and removed.

View File

@ -3446,7 +3446,9 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
/* need: count + 2 desc gap to keep tail from touching
* head, otherwise try next time */
if (unlikely(e1000_maybe_stop_tx(netdev, tx_ring, count + 2))) {
spin_unlock_irqrestore(&tx_ring->tx_lock, flags);
if (!adapter->ecdev) {
spin_unlock_irqrestore(&tx_ring->tx_lock, flags);
}
return NETDEV_TX_BUSY;
}

View File

@ -3427,7 +3427,9 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
/* need: count + 2 desc gap to keep tail from touching
* head, otherwise try next time */
if (unlikely(e1000_maybe_stop_tx(netdev, tx_ring, count + 2))) {
spin_unlock_irqrestore(&tx_ring->tx_lock, flags);
if (!adapter->ecdev) {
spin_unlock_irqrestore(&tx_ring->tx_lock, flags);
}
return NETDEV_TX_BUSY;
}

View File

@ -3425,7 +3425,9 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
/* need: count + 2 desc gap to keep tail from touching
* head, otherwise try next time */
if (unlikely(e1000_maybe_stop_tx(netdev, tx_ring, count + 2))) {
spin_unlock_irqrestore(&tx_ring->tx_lock, flags);
if (!adapter->ecdev) {
spin_unlock_irqrestore(&tx_ring->tx_lock, flags);
}
return NETDEV_TX_BUSY;
}