diff options
author | Francois Romieu <romieu@fr.zoreil.com> | 2006-12-17 17:03:15 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-12-26 16:24:11 -0500 |
commit | d15e9c4d9a75702b30e00cdf95c71c88e3f3f51e (patch) | |
tree | e7ba1469eac6f732a7d2b9debc7713d8173dc0a2 /drivers/net/b44.c | |
parent | 79f3d3996f06ee339c6f173e573826eccd3914ab (diff) |
netpoll: drivers must not enable IRQ unconditionally in their NAPI handler
net/core/netpoll.c::netpoll_send_skb() calls the poll handler when
it is available. As netconsole can be used from almost any context,
IRQ must not be enabled blindly in the NAPI handler of a driver which
supports netpoll.
b57bd06655a028aba7b92e1c19c2093e7fcfb341 fixed the issue for the
8139too.c driver.
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/b44.c')
-rw-r--r-- | drivers/net/b44.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index 474a4e3438db..5eb2ec68393f 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
@@ -879,12 +879,14 @@ static int b44_poll(struct net_device *netdev, int *budget) | |||
879 | } | 879 | } |
880 | 880 | ||
881 | if (bp->istat & ISTAT_ERRORS) { | 881 | if (bp->istat & ISTAT_ERRORS) { |
882 | spin_lock_irq(&bp->lock); | 882 | unsigned long flags; |
883 | |||
884 | spin_lock_irqsave(&bp->lock, flags); | ||
883 | b44_halt(bp); | 885 | b44_halt(bp); |
884 | b44_init_rings(bp); | 886 | b44_init_rings(bp); |
885 | b44_init_hw(bp, 1); | 887 | b44_init_hw(bp, 1); |
886 | netif_wake_queue(bp->dev); | 888 | netif_wake_queue(bp->dev); |
887 | spin_unlock_irq(&bp->lock); | 889 | spin_unlock_irqrestore(&bp->lock, flags); |
888 | done = 1; | 890 | done = 1; |
889 | } | 891 | } |
890 | 892 | ||