Fixed missing protection for a spin_lock_irqrestore() call.
authorFlorian Pose <fp@igh-essen.com>
Mon, 28 Jul 2008 08:28:42 +0000
changeset 1154 04bcd38cf8dc
parent 1153 352a471d388f
child 1155 bd4e5b544473
Fixed missing protection for a spin_lock_irqrestore() call.
NEWS
devices/e1000/e1000_main-2.6.20-ethercat.c
devices/e1000/e1000_main-2.6.22-ethercat.c
devices/e1000/e1000_main-2.6.24-ethercat.c
--- a/NEWS	Mon Jul 28 08:17:01 2008 +0000
+++ b/NEWS	Mon Jul 28 08:28:42 2008 +0000
@@ -87,6 +87,8 @@
       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.
--- a/devices/e1000/e1000_main-2.6.20-ethercat.c	Mon Jul 28 08:17:01 2008 +0000
+++ b/devices/e1000/e1000_main-2.6.20-ethercat.c	Mon Jul 28 08:28:42 2008 +0000
@@ -3446,7 +3446,9 @@
 	/* 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;
 	}
 
--- a/devices/e1000/e1000_main-2.6.22-ethercat.c	Mon Jul 28 08:17:01 2008 +0000
+++ b/devices/e1000/e1000_main-2.6.22-ethercat.c	Mon Jul 28 08:28:42 2008 +0000
@@ -3427,7 +3427,9 @@
 	/* 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;
 	}
 
--- a/devices/e1000/e1000_main-2.6.24-ethercat.c	Mon Jul 28 08:17:01 2008 +0000
+++ b/devices/e1000/e1000_main-2.6.24-ethercat.c	Mon Jul 28 08:28:42 2008 +0000
@@ -3425,7 +3425,9 @@
 	/* 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;
 	}