diff mbox

[kernel,2.6.32-git7] 3c574_cs: disable irq before calling el3_interrupt

Message ID 20091213094411.18be2ff6.ken_kawasaki@spring.nifty.jp
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Ken Kawasaki Dec. 13, 2009, 12:44 a.m. UTC
3c574_cs, 3c589_cs:
	disable irq before calling el3_interrupt
	in the media_check function.

Signed-off-by: Ken Kawasaki <ken_kawasaki@spring.nifty.jp>

---

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

David Miller Dec. 14, 2009, 3:48 a.m. UTC | #1
From: Ken Kawasaki <ken_kawasaki@spring.nifty.jp>
Date: Sun, 13 Dec 2009 09:44:11 +0900

> 
> 3c574_cs, 3c589_cs:
> 	disable irq before calling el3_interrupt
> 	in the media_check function.
> 
> Signed-off-by: Ken Kawasaki <ken_kawasaki@spring.nifty.jp>

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

--- linux-2.6.32-git7/drivers/net/pcmcia/3c574_cs.c.orig	2009-12-12 06:58:14.000000000 +0900
+++ linux-2.6.32-git7/drivers/net/pcmcia/3c574_cs.c	2009-12-13 08:50:18.000000000 +0900
@@ -912,7 +912,11 @@  static void media_check(unsigned long ar
 	if ((inw(ioaddr + EL3_STATUS) & IntLatch) && (inb(ioaddr + Timer) == 0xff)) {
 		if (!lp->fast_poll)
 			printk(KERN_INFO "%s: interrupt(s) dropped!\n", dev->name);
+
+		local_irq_save(flags);
 		el3_interrupt(dev->irq, dev);
+		local_irq_restore(flags);
+
 		lp->fast_poll = HZ;
 	}
 	if (lp->fast_poll) {
--- linux-2.6.32-git7/drivers/net/pcmcia/3c589_cs.c.orig	2009-12-12 06:58:28.000000000 +0900
+++ linux-2.6.32-git7/drivers/net/pcmcia/3c589_cs.c	2009-12-13 08:50:38.000000000 +0900
@@ -711,7 +711,11 @@  static void media_check(unsigned long ar
 	(inb(ioaddr + EL3_TIMER) == 0xff)) {
 	if (!lp->fast_poll)
 	    printk(KERN_WARNING "%s: interrupt(s) dropped!\n", dev->name);
+
+	local_irq_save(flags);
 	el3_interrupt(dev->irq, dev);
+	local_irq_restore(flags);
+
 	lp->fast_poll = HZ;
     }
     if (lp->fast_poll) {