Russell King wrote:
> Having upgraded from 2.6.16 to 2.6.22-rc6, I'm now seeing the following.
>
> Looks like netfilter is calling local_bh_enable() with IRQs disabled,
> which would appear to be illegal. Thankfully, this is a warn-once
> warning.
>
> WARNING: at /home/rmk/git/linux-2.6-rmk/kernel/softirq.c:138 local_bh_enable()
> [...]
> [<
c01447fc>] (nf_conntrack_destroy+0x0/0x2c) from [<
c012c05c>] (__kfree_skb+0xd0/0x100)
> [<
c012bf8c>] (__kfree_skb+0x0/0x100) from [<
c012c0d8>] (kfree_skb+0x4c/0x50)
> r5:
c12a3800 r4:
00000300
> [<
c012c08c>] (kfree_skb+0x0/0x50) from [<
bf03cbb0>] (el3_start_xmit+0xb8/0xd0 [3c589_cs])
> [<
bf03caf8>] (el3_start_xmit+0x0/0xd0 [3c589_cs]) from [<
c01324dc>] (dev_hard_start_xmit+0x1a8/0x244)
> r7:
c12a3800 r6:
c1a9aa00 r5:
c1a9aa00 r4:
c12a3800
> [<
c0132334>] (dev_hard_start_xmit+0x0/0x244) from [<
c013fcc0>] (__qdisc_run+0xb0/0x198)
Thats a bug in the 3c589_cs driver. Patch attached.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
outw(SetTxThreshold + 1536, ioaddr + EL3_CMD);
}
- dev_kfree_skb(skb);
pop_tx_status(dev);
spin_unlock_irqrestore(&priv->lock, flags);
+ dev_kfree_skb(skb);
return 0;
}