3c574_cs: disable irq before calling el3_interrupt
authorKen Kawasaki <ken_kawasaki@spring.nifty.jp>
Sat, 12 Dec 2009 14:44:11 +0000 (14:44 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Dec 2009 03:47:43 +0000 (19:47 -0800)
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>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/pcmcia/3c574_cs.c
drivers/net/pcmcia/3c589_cs.c

index 17a27225cc98cbc076f705ec6c850812ed6f56c8..98938ea9e0bdc05bb7c3f5e18d83ef535e844869 100644 (file)
@@ -912,7 +912,11 @@ static void media_check(unsigned long arg)
        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) {
index 6f8d7e2e592246205df9ae45625ae1816e9f03b3..322e11df0097f1f04204fd6a09d6a892273b1965 100644 (file)
@@ -711,7 +711,11 @@ static void media_check(unsigned long arg)
        (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) {