[PATCH kernel 2.6.35-rc3-git7] axnet_cs: use spin_lock_irqsave in ax_interrupt
From: Ken Kawasaki <hidden>
Date: 2010-07-10 23:16:56
axnet_cs:
use spin_lock_irqsave instead of spin_lock in ax_interrupt
Signed-off-by: Ken Kawasaki <redacted>
---
--- linux-2.6.35-git7/drivers/net/pcmcia/axnet_cs.c.orig 2010-07-04 08:28:15.000000000 +0900
+++ linux-2.6.35-git7/drivers/net/pcmcia/axnet_cs.c 2010-07-10 19:07:20.000000000 +0900@@ -1168,6 +1168,7 @@ static irqreturn_t ax_interrupt(int irq, int interrupts, nr_serviced = 0, i; struct ei_device *ei_local; int handled = 0; + unsigned long flags; e8390_base = dev->base_addr; ei_local = netdev_priv(dev);
@@ -1176,7 +1177,7 @@ static irqreturn_t ax_interrupt(int irq, * Protect the irq test too. */ - spin_lock(&ei_local->page_lock); + spin_lock_irqsave(&ei_local->page_lock, flags); if (ei_local->irqlock) {
@@ -1188,7 +1189,7 @@ static irqreturn_t ax_interrupt(int irq, dev->name, inb_p(e8390_base + EN0_ISR), inb_p(e8390_base + EN0_IMR)); #endif - spin_unlock(&ei_local->page_lock); + spin_unlock_irqrestore(&ei_local->page_lock, flags); return IRQ_NONE; }
@@ -1261,7 +1262,7 @@ static irqreturn_t ax_interrupt(int irq, ei_local->irqlock = 0; outb_p(ENISR_ALL, e8390_base + EN0_IMR); - spin_unlock(&ei_local->page_lock); + spin_unlock_irqrestore(&ei_local->page_lock, flags); return IRQ_RETVAL(handled); }