linux/drivers/net
David S. Miller 6c2da9c218 forcedeth: Use napi_complete() not __napi_complete().
It's not enough that forcedeth's interrupts are disabled,
local cpu interrupts have to unconditionally be off
when we remove the device from the poll list.

Based upon a crash report from
Alexander Beregalov <a.beregalov@gmail.com>:

 WARNING: at lib/list_debug.c:30 __list_add+0x89/0x90()
 Hardware name:
 list_add corruption. prev->next should be next (c06ea834), but was
f70244c8. (prev=c06ea834).
 Modules linked in: w83627hf hwmon_vid i2c_nforce2
 Pid: 1436, comm: portageq Not tainted 2.6.30-rc1 #1
 Call Trace:
  [<c0129d73>] warn_slowpath+0x73/0xd0
  [<c03c6008>] ? __kfree_skb+0x38/0x90
  [<c03f9b06>] ? tcp_data_snd_check+0x26/0xe0
  [<c03fd67f>] ? tcp_rcv_established+0x2bf/0x5e0
  [<c040557a>] ? tcp_v4_rcv+0x47a/0x610
  [<c014cebd>] ? print_lock_contention_bug+0x1d/0x110
  [<c044a967>] ? _spin_unlock+0x27/0x50
  [<c040564b>] ? tcp_v4_rcv+0x54b/0x610
  [<c02d86f9>] __list_add+0x89/0x90
  [<c03ccff9>] __napi_schedule+0x29/0x60
  [<c036946d>] e1000_intr+0xbd/0x1a0
  [<c015c5de>] handle_IRQ_event+0x3e/0x120
  [<c015e190>] handle_fasteoi_irq+0x60/0xd0
  [<c0104fd4>] handle_irq+0x34/0x60
  [<c015f748>] ? rcu_irq_enter+0x8/0x40
  [<c0104b29>] do_IRQ+0x39/0xa0
  [<c03c592c>] ? skb_release_head_state+0x2c/0x60
  [<c01034ee>] common_interrupt+0x2e/0x34
  [<c02d8601>] ? list_del+0x21/0x90
  [<c014e54b>] ? trace_hardirqs_on+0xb/0x10
  [<c03cd4da>] __napi_complete+0x1a/0x30
  [<c0381971>] nv_napi_poll+0xd1/0x5c0
  [<c014e54b>] ? trace_hardirqs_on+0xb/0x10
  [<c03cd5f6>] net_rx_action+0x106/0x1b0
  [<c012e8df>] __do_softirq+0x6f/0x100
  [<c044a967>] ? _spin_unlock+0x27/0x50
  [<c015e1b8>] ? handle_fasteoi_irq+0x88/0xd0
  [<c012e9cd>] do_softirq+0x5d/0x70
  [<c012ebad>] irq_exit+0x7d/0xa0
  [<c0104b32>] do_IRQ+0x42/0xa0
  [<c012e9b7>] ? do_softirq+0x47/0x70
  [<c01034ee>] common_interrupt+0x2e/0x34

Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-09 01:09:33 -07:00
..
appletalk
arcnet
arm Merge branch 'origin' into devel 2009-03-28 20:29:51 +00:00
atl1c
atl1e dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
atlx dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
benet
bonding proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
can
chelsio dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
cris
cxgb3 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
e1000 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
e1000e dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
ehea
enic dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
fs_enet
hamradio Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/net-next-2.6 2009-03-31 14:43:54 -07:00
ibm_newemac ibm_newemac: Fix dangerous struct assumption 2009-04-06 17:07:59 -07:00
igb igb: remove sysfs entry that was used to set the number of vfs 2009-04-08 16:03:15 -07:00
igbvf igbvf: add new driver to support 82576 virtual functions 2009-04-08 16:03:14 -07:00
irda proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
ixgb dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
ixgbe dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
ixp2000
mlx4 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
myri10ge dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
netxen dma-mapping: replace all DMA_39BIT_MASK macro with DMA_BIT_MASK(39) 2009-04-07 08:31:11 -07:00
pcmcia axnet_cs: fix phy_id detection for bogus Asix chip. 2009-04-06 17:07:54 -07:00
phy workqueue: add to_delayed_work() helper function 2009-04-02 19:04:50 -07:00
qlge dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
sfc sfc: Call netif_napi_add() before registering our interrupt handler 2009-03-31 15:07:21 -07:00
skfp trivial: fix typo "varaible" -> "variable" 2009-03-30 15:21:57 +02:00
tokenring dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
tulip dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
usb dma-mapping: replace all DMA_64BIT_MASK macro with DMA_BIT_MASK(64) 2009-04-07 08:31:10 -07:00
vxge vxge: should include tcp.h 2009-04-04 16:36:18 -07:00
wan dma-mapping: replace all DMA_28BIT_MASK macro with DMA_BIT_MASK(28) 2009-04-07 08:31:12 -07:00
wimax
wireless dma-mapping: replace all DMA_30BIT_MASK macro with DMA_BIT_MASK(30) 2009-04-07 08:31:11 -07:00
3c59x.c
3c501.c
3c501.h
3c503.c
3c503.h
3c505.c
3c505.h
3c507.c
3c509.c
3c515.c
3c523.c
3c523.h
3c527.c
3c527.h
7990.c
7990.h
8139cp.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
8139too.c
8390.c
8390.h
8390p.c
82596.c
a2065.c
a2065.h
ac3200.c
acenic.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
acenic.h
amd8111e.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
amd8111e.h
apne.c
ariadne.c
ariadne.h
at1700.c
atarilance.c
atp.c
atp.h
au1000_eth.c
au1000_eth.h
ax88796.c
b44.c dma-mapping: replace all DMA_30BIT_MASK macro with DMA_BIT_MASK(30) 2009-04-07 08:31:11 -07:00
b44.h
bfin_mac.c
bfin_mac.h
bmac.c
bmac.h
bnx2_fw.h bnx2: Use request_firmware() 2009-04-04 16:51:14 -07:00
bnx2.c bnx2: Don't use reserved names 2009-04-08 15:50:07 -07:00
bnx2.h bnx2: Use request_firmware() 2009-04-04 16:51:14 -07:00
bnx2x_dump.h
bnx2x_fw_defs.h
bnx2x_hsi.h
bnx2x_init_values.h
bnx2x_init.h
bnx2x_link.c
bnx2x_link.h
bnx2x_main.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
bnx2x_reg.h
bnx2x.h
bsd_comp.c
cassini.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
cassini.h
cpmac.c
cs89x0.c
cs89x0.h
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c
defxx.h
depca.c
depca.h
dl2k.c dma-mapping: replace all DMA_48BIT_MASK macro with DMA_BIT_MASK(48) 2009-04-07 08:31:10 -07:00
dl2k.h
dm9000.c workqueue: add to_delayed_work() helper function 2009-04-02 19:04:50 -07:00
dm9000.h
dnet.c dnet: remove unused #include <version.h> 2009-04-02 16:31:45 -07:00
dnet.h
dummy.c
e100.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
e2100.c
eepro.c
eexpress.c
eexpress.h
enc28j60_hw.h
enc28j60.c
epic100.c
eql.c drivers/net/eql.c: Fix a dev leakage. 2009-04-08 15:56:33 -07:00
es3210.c
eth16i.c
ethoc.c
ewrk3.c
ewrk3.h
fealnx.c
fec_mpc52xx_phy.c
fec_mpc52xx.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-04-02 21:05:30 -07:00
fec_mpc52xx.h
fec.c FEC driver: add missing #endif 2009-04-08 15:44:45 -07:00
fec.h
forcedeth.c forcedeth: Use napi_complete() not __napi_complete(). 2009-04-09 01:09:33 -07:00
fsl_pq_mdio.c fsl_pq_mdio: Fix compile failure 2009-04-02 13:57:30 -07:00
fsl_pq_mdio.h
gianfar_ethtool.c
gianfar_sysfs.c
gianfar.c gianfar: Fix use-after-of_node_put() in gfar_of_init(). 2009-03-29 01:19:37 -07:00
gianfar.h gianfar: Remove unused header 2009-04-02 01:13:47 -07:00
hamachi.c
hp100.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
hp100.h
hp-plus.c
hp.c
hplance.c
hplance.h
hydra.c
ibmlana.c
ibmlana.h
ibmveth.c
ibmveth.h
ifb.c
ioc3-eth.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
ipg.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
ipg.h
isa-skeleton.c
iseries_veth.c
jazzsonic.c
jme.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
jme.h
Kconfig igbvf: add new driver to support 82576 virtual functions 2009-04-08 16:03:14 -07:00
korina.c
lance.c
lasi_82596.c
lib8390.c
lib82596.c
LICENSE.SRC
lne390.c
loopback.c
lp486e.c
mac89x0.c
mac8390.c
macb.c
macb.h
mace.c
mace.h
macmace.c
macsonic.c
macvlan.c
Makefile igbvf: add new driver to support 82576 virtual functions 2009-04-08 16:03:14 -07:00
meth.c MIPS: Stop using <asm-generic/int-l64.h>. 2009-03-30 14:49:41 +02:00
meth.h
mii.c
mipsnet.c
mv643xx_eth.c mv643xx_eth: don't reset the rx coal timer on interface up 2009-04-08 15:42:46 -07:00
mvme147.c
myri_sbus.c myri_sbus: use request_firmware 2009-04-04 16:38:42 -07:00
myri_sbus.h
natsemi.c
ne2.c
ne2k-pci.c
ne3210.c
ne-h8300.c
ne.c
netconsole.c netpoll: store local and remote ip in net-endian 2009-03-28 23:55:58 -07:00
netx-eth.c
ni52.c
ni52.h
ni65.c
ni65.h
ni5010.c ni5010: convert to net_device_ops 2009-03-28 23:37:27 -07:00
ni5010.h
niu.c niu: Fix unused variable warning. 2009-04-08 15:52:16 -07:00
niu.h
ns83820.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
pasemi_mac_ethtool.c
pasemi_mac.c
pasemi_mac.h
pci-skeleton.c
pcnet32.c
plip.c
ppp_async.c
ppp_deflate.c
ppp_generic.c
ppp_mppe.c
ppp_mppe.h
ppp_synctty.c
pppoe.c
pppol2tp.c
pppox.c
ps3_gelic_net.c
ps3_gelic_net.h
ps3_gelic_wireless.c
ps3_gelic_wireless.h
qla3xxx.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
qla3xxx.h
r6040.c r6040: set MODULE_VERSION 2009-04-08 15:50:43 -07:00
r8169.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
rionet.c
rrunner.c
rrunner.h
s2io-regs.h
s2io.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
s2io.h
sb1000.c
sb1250-mac.c trivial: Fix misspelling of firmware 2009-03-30 15:21:59 +02:00
sc92031.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
seeq8005.c
seeq8005.h
sgiseeq.c
sgiseeq.h
sh_eth.c
sh_eth.h
sis190.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
sis900.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
sis900.h
skge.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
skge.h
sky2.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
sky2.h
slhc.c
slip.c
slip.h
smc91x.c
smc91x.h MIPS: Alchemy: PB1200: use SMC91X platform data. 2009-03-30 14:49:46 +02:00
smc911x.c
smc911x.h
smc9194.c
smc9194.h
smc-mca.c
smc-ultra32.c
smc-ultra.c
smsc911x.c smsc911x: correct debugging message on mii read timeout 2009-04-08 15:42:15 -07:00
smsc911x.h
smsc9420.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
smsc9420.h
sni_82596.c
sonic.c
sonic.h
Space.c
spider_net_ethtool.c
spider_net.c
spider_net.h
starfire.c
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c
sunbmac.c
sunbmac.h
sundance.c
sungem_phy.c
sungem_phy.h
sungem.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
sungem.h
sunhme.c
sunhme.h
sunlance.c
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c tc35815: Fix build error if NAPI enabled 2009-04-02 01:17:36 -07:00
tehuti.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
tehuti.h dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
tg3.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
tg3.h
tlan.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
tlan.h
tsi108_eth.c
tsi108_eth.h
tun.c
typhoon.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
typhoon.h
ucc_geth_ethtool.c ucc_geth: Remove unused header 2009-04-02 01:13:48 -07:00
ucc_geth.c ucc_geth: Pass proper device to DMA routines, otherwise oops happens 2009-04-02 01:26:07 -07:00
ucc_geth.h ucc_geth: Pass proper device to DMA routines, otherwise oops happens 2009-04-02 01:26:07 -07:00
veth.c
via-rhine.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
via-velocity.c
via-velocity.h
virtio_net.c virtio_net: Set the mac config only when VIRITO_NET_F_MAC 2009-04-04 16:40:19 -07:00
wd.c
xen-netfront.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2009-03-28 13:30:43 -07:00
xtsonic.c
yellowfin.c
znet.c
zorro8390.c