aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Brandeburg <jesse.brandeburg@intel.com>2009-01-27 16:41:58 -0800
committerWilly Tarreau <w@1wt.eu>2009-06-07 21:36:39 +0200
commitd5c575f0c0b56eb020c6501a71706d8f26dd9669 (patch)
tree194ff02f0bf33e4c69dcf10735e440e0cf3ee08d
parentf75929935b4b5d460d13eb4e70ba8b93dd81140f (diff)
downloadlinux-2.4-d5c575f0c0b56eb020c6501a71706d8f26dd9669.tar.gz
e1000: fix bug with shared interrupt during reset
(backported from 2.6 commit 15b2bee22a0390d951301b53e83df88d0350c499) A nasty bug was found where an MTU change (or anything else that caused a reset) could race with the interrupt code. The interrupt code was entered by a shared interrupt during the MTU change. This change prevents the interrupt code from running while the driver is in the middle of its reset path. Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Willy Tarreau <w@1wt.eu>
-rw-r--r--drivers/net/e1000/e1000_main.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index b3045a2ef226a..66db43687b4d9 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -3621,7 +3621,7 @@ e1000_intr(int irq, void *data)
#ifndef CONFIG_E1000_NAPI
int i;
#endif
- if (unlikely(!icr))
+ if (unlikely((!icr) || test_bit(__E1000_RESETTING, &adapter->flags)))
return IRQ_NONE; /* Not our interrupt */
#ifdef CONFIG_E1000_NAPI