Messages in this thread Patch in this message | | | Subject | Re: [patch mm1-rc2] lock validator: netlink.c netlink_table_grab fix | From | Zhu Yi <> | Date | Fri, 02 Jun 2006 11:10:10 +0800 |
| |
On Thu, 2006-06-01 at 16:42 +0200, Frederik Deweerdt wrote: > This got rid of the oops for me, is it the right fix?
I don't think netlink will contend with hardirqs. Can you test with this fix for ipw2200 driver?
Thanks, -yi diff -urp a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c --- a/drivers/net/wireless/ipw2200.c 2006-04-01 09:47:24.000000000 +0800 +++ b/drivers/net/wireless/ipw2200.c 2006-06-01 14:32:00.000000000 +0800 @@ -11058,11 +11058,9 @@ static irqreturn_t ipw_isr(int irq, void if (!priv) return IRQ_NONE; - spin_lock(&priv->lock); - if (!(priv->status & STATUS_INT_ENABLED)) { /* Shared IRQ */ - goto none; + return IRQ_NONE; } inta = ipw_read32(priv, IPW_INTA_RW); @@ -11071,12 +11069,12 @@ static irqreturn_t ipw_isr(int irq, void if (inta == 0xFFFFFFFF) { /* Hardware disappeared */ IPW_WARNING("IRQ INTA == 0xFFFFFFFF\n"); - goto none; + return IRQ_NONE; } if (!(inta & (IPW_INTA_MASK_ALL & inta_mask))) { /* Shared interrupt */ - goto none; + return IRQ_NONE; } /* tell the device to stop sending interrupts */ @@ -11091,12 +11089,7 @@ static irqreturn_t ipw_isr(int irq, void tasklet_schedule(&priv->irq_tasklet); - spin_unlock(&priv->lock); - return IRQ_HANDLED; - none: - spin_unlock(&priv->lock); - return IRQ_NONE; } static void ipw_rf_kill(void *adapter) | |