merge -c1374 trunk: Missing spin_lock_irqrestore() protection. stable-1.3
authorFlorian Pose <fp@igh-essen.com>
Mon, 28 Jul 2008 08:30:44 +0000
branchstable-1.3
changeset 1757 c5757cebfaea
parent 1756 dbe4a4219aa5
child 1758 2f7f5fa7b870
merge -c1374 trunk: Missing spin_lock_irqrestore() protection.
NEWS
devices/e1000/e1000_main-2.6.20-ethercat.c
devices/e1000/e1000_main-2.6.22-ethercat.c
--- a/NEWS	Mon Jul 28 08:16:01 2008 +0000
+++ b/NEWS	Mon Jul 28 08:30:44 2008 +0000
@@ -8,6 +8,10 @@
 
 * Reading domain process data via sysfs.
 * Added e1000 driver for kernel 2.6.22.
+* 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).
 * Reduced watchdog function executions in e1000 drivers.
 * Fixed sync manager configuration problem for some slaves.
 
--- a/devices/e1000/e1000_main-2.6.20-ethercat.c	Mon Jul 28 08:16:01 2008 +0000
+++ b/devices/e1000/e1000_main-2.6.20-ethercat.c	Mon Jul 28 08:30:44 2008 +0000
@@ -3450,7 +3450,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:16:01 2008 +0000
+++ b/devices/e1000/e1000_main-2.6.22-ethercat.c	Mon Jul 28 08:30:44 2008 +0000
@@ -3431,7 +3431,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;
 	}