--- /dev/null
+From SRS0=rqZ1=U3=vger.kernel.org=netdev-owner@bounce2.pobox.com Tue Jun 21 13:36:24 2005
+Date: Tue, 21 Jun 2005 13:21:42 -0700
+From: Mitch Williams <mitch.a.williams@intel.com>
+To: netdev@vger.kernel.org
+Subject: [PATCH 2.6.12] e1000: fix spinlock bug
+
+This patch fixes an obvious and nasty bug where we could exit the transmit
+routine while holding tx_lock.
+
+Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
+Signed-off-by: Chris Wright <chrisw@osdl.org>
+---
+
+
+diff -urpN -X dontdiff linux-2.6.12-clean/drivers/net/e1000/e1000_main.c linux-2.6.12/drivers/net/e1000/e1000_main.c
+--- linux-2.6.12-clean/drivers/net/e1000/e1000_main.c 2005-06-17 12:48:29.000000000 -0700
++++ linux-2.6.12/drivers/net/e1000/e1000_main.c 2005-06-21 10:42:29.000000000 -0700
+@@ -2307,6 +2307,7 @@ e1000_xmit_frame(struct sk_buff *skb, st
+ tso = e1000_tso(adapter, skb);
+ if (tso < 0) {
+ dev_kfree_skb_any(skb);
++ spin_unlock_irqrestore(&adapter->tx_lock, flags);
+ return NETDEV_TX_OK;
+ }
+