linux/drivers/net/tulip
Dongdong Deng 22580f894a drivers/net: fixed drivers that support netpoll use ndo_start_xmit()
The NETPOLL API requires that interrupts remain disabled in
netpoll_send_skb(). The use of spin_lock_irq() and spin_unlock_irq()
in the NETPOLL API callbacks causes the interrupts to get enabled and
can lead to kernel instability.

The solution is to use spin_lock_irqsave() and spin_unlock_restore()
to prevent the irqs from getting enabled while in netpoll_send_skb().

Call trace:
netpoll_send_skb()
{
   -> local_irq_save(flags)
     ---> dev->ndo_start_xmit(skb, dev)
         ---> spin_lock_irq()
         ---> spin_unlock_irq() *******here would enable the interrupt.
              ...
   -> local_irq_restore(flags)
}

Signed-off-by: Dongdong Deng <dongdong.deng@windriver.com>
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Acked-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Acked-by: Matt Mackall <mpm@selenic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-08-14 16:41:16 -07:00
..
21142.c tulip: fix 21142 with 10Mbps without negotiation 2009-01-29 17:35:04 -08:00
de4x5.c tulip: Read buffer overflow 2009-08-02 12:20:38 -07:00
de4x5.h de4x5: Remove developer debug feature about set/clear promisc 2008-07-22 16:09:09 -04:00
de2104x.c Remove multiple KERN_ prefixes from printk formats 2009-07-08 10:30:03 -07:00
dmfe.c net: use symbolic values for ndo_start_xmit() return codes 2009-06-13 01:18:50 -07:00
eeprom.c netdevice: safe convert to netdev_priv() #part-3 2008-11-12 23:38:36 -08:00
interrupt.c tulip: Fix for MTU problems with 802.1q tagged frames 2009-03-13 15:43:38 -07:00
Kconfig de2104x: support for systems lacking cache coherence 2009-06-11 02:32:41 -07:00
Makefile remove the obsolete xircom_tulip_cb driver 2008-03-17 07:49:23 -04:00
media.c drivers/net/tulip: fix sparse warning: symbol shadows an earlier one 2009-02-17 19:34:46 -08:00
pnic2.c drivers/net/tulip: update first comment in tulip files 2008-06-24 22:59:26 -04:00
pnic.c drivers/net/tulip: update first comment in tulip files 2008-06-24 22:59:26 -04:00
timer.c drivers/net/tulip: update first comment in tulip files 2008-06-24 22:59:26 -04:00
tulip_core.c drivers/net: fixed drivers that support netpoll use ndo_start_xmit() 2009-08-14 16:41:16 -07:00
tulip.h tulip: Fix for MTU problems with 802.1q tagged frames 2009-03-13 15:43:38 -07:00
uli526x.c net: use symbolic values for ndo_start_xmit() return codes 2009-06-13 01:18:50 -07:00
winbond-840.c Remove multiple KERN_ prefixes from printk formats 2009-07-08 10:30:03 -07:00
xircom_cb.c xircom: convert devices to new API 2009-01-07 18:00:55 -08:00