aha/drivers/net
Reinette Chatre de0bd50845 iwlwifi: fix potential rx buffer loss
RX handling maintains a few lists that keep track of the RX buffers.
Buffers move from one list to the other as they are used, replenished, and
again made available for usage. In one such instance, when a buffer is used
it enters the "rx_used" list. When buffers are replenished an skb is
attached to the buffer and it is moved to the "rx_free" list. The problem
here is that the buffer is first removed from the "rx_used" list _before_ the
skb is allocated. Thus, if the skb allocation fails this buffer remains
removed from the "rx_used" list and is thus lost for future usage.

Fix this by first allocating the skb before trying to attach it to a list.
We add an additional check to not do this unnecessarily.

Reported-by: Rick Farrington <rickdic@hotmail.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-09-23 11:35:40 -04:00
..
appletalk Subject: [PATCH] appletalk: Fix skb leak when ipddp interface is not loaded 2009-09-11 12:54:23 -07:00
arcnet netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
arm drivers: Kill now superfluous ->last_rx stores 2009-09-02 23:07:36 -07:00
atl1c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
atl1e netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
atlx netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
benet be2net: Code changes in Tx path to use skb_dma_map/skb_dma_unmap 2009-09-07 01:56:41 -07:00
bonding bonding: use compare_ether_addr_64bits() in ALB 2009-09-01 17:40:26 -07:00
can can: sja1000: legacy SJA1000 ISA bus driver 2009-09-04 02:16:16 -07:00
chelsio netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
cris
cxgb3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2009-09-14 10:37:28 -07:00
e1000 netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
e1000e netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
ehea
enic enic: organize device initialization/deinit into separate functions 2009-09-03 20:19:25 -07:00
fs_enet
hamradio NET: Fix possible corruption in bpqether driver 2009-09-02 23:45:58 -07:00
ibm_newemac netdev: Convert MDIO ioctl implementation to use struct mii_ioctl_data 2009-09-03 20:02:12 -07:00
igb netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
igbvf drivers: Kill now superfluous ->last_rx stores 2009-09-02 23:07:36 -07:00
irda Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-02 00:32:56 -07:00
ixgb intel: convert drivers to netdev_tx_t 2009-09-01 01:13:52 -07:00
ixgbe ixgbe: Add support for using FCoE DDP in 82599 as FCoE targets 2009-09-03 20:01:55 -07:00
ixp2000 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-02 00:32:56 -07:00
mlx4 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2009-09-14 10:37:28 -07:00
myri10ge netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
netxen netxen: update copyright 2009-09-11 16:58:51 -07:00
pcmcia netdev: Convert MDIO ioctl implementation to use struct mii_ioctl_data 2009-09-03 20:02:12 -07:00
phy phy/marvell: Make non-aneg speed/duplex forcing work for 88E1111 PHYs 2009-09-11 12:54:38 -07:00
qlge netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
sfc netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
skfp netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
tokenring tokenring: convert to netdev_tx_t 2009-09-01 01:13:26 -07:00
tulip netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
usb cdc-phonet: autoconfigure Phonet address 2009-09-11 12:55:10 -07:00
vxge drivers: Kill now superfluous ->last_rx stores 2009-09-02 23:07:36 -07:00
wan drivers/net/wan: introduce missing kfree 2009-09-11 12:54:30 -07:00
wimax net: Add DEVTYPE support for Ethernet based devices 2009-09-11 12:54:55 -07:00
wireless iwlwifi: fix potential rx buffer loss 2009-09-23 11:35:40 -04:00
3c59x.c 3com: convert drivers to netdev_tx_t 2009-09-01 01:13:50 -07:00
3c501.c 3com: convert drivers to netdev_tx_t 2009-09-01 01:13:50 -07:00
3c501.h 3com: convert drivers to netdev_tx_t 2009-09-01 01:13:50 -07:00
3c503.c net: Fix a build break because of a typo in drivers/net/3c503.c 2009-09-04 03:41:07 -07:00
3c503.h
3c505.c 3com: convert drivers to netdev_tx_t 2009-09-01 01:13:50 -07:00
3c505.h
3c507.c 3com: convert drivers to netdev_tx_t 2009-09-01 01:13:50 -07:00
3c509.c 3com: convert drivers to netdev_tx_t 2009-09-01 01:13:50 -07:00
3c515.c 3com: convert drivers to netdev_tx_t 2009-09-01 01:13:50 -07:00
3c523.c 3com: convert drivers to netdev_tx_t 2009-09-01 01:13:50 -07:00
3c523.h
3c527.c 3com: convert drivers to netdev_tx_t 2009-09-01 01:13:50 -07:00
3c527.h
7990.c
7990.h
8139cp.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
8139too.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
8390.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
8390.h netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
8390p.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
82596.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
a2065.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
a2065.h
ac3200.c
acenic.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
acenic.h netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
amd8111e.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
amd8111e.h
apne.c
ariadne.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
ariadne.h
at1700.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
atarilance.c
atp.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
atp.h
au1000_eth.c au1000_eth: possible NULL dereference of aup->mii_bus->irq in au1000_probe() 2009-09-01 17:40:56 -07:00
au1000_eth.h
ax88796.c
b44.c b44/b43/b43legacy: Fix switch warnings introduced by SSB-SDIO 2009-09-09 11:19:03 -04:00
b44.h
bfin_mac.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
bfin_mac.h
bmac.c
bmac.h
bnx2.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
bnx2.h Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-02 00:32:56 -07:00
bnx2_fw.h
bnx2x.h
bnx2x_dump.h
bnx2x_fw_defs.h
bnx2x_fw_file_hdr.h
bnx2x_hsi.h
bnx2x_init.h
bnx2x_init_ops.h
bnx2x_link.c
bnx2x_link.h
bnx2x_main.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
bnx2x_reg.h
bsd_comp.c
cassini.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
cassini.h
cnic.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-02 00:32:56 -07:00
cnic.h
cnic_defs.h
cnic_if.h
cpmac.c
cs89x0.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
cs89x0.h
davinci_emac.c drivers: Kill now superfluous ->last_rx stores 2009-09-02 23:07:36 -07:00
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
defxx.h
depca.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
depca.h
dl2k.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
dl2k.h
dm9000.c dm9000: Use resource_size instead of private macro 2009-09-09 18:54:49 -07:00
dm9000.h
dnet.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
dnet.h
dummy.c netdev: convert pseudo drivers to netdev_tx_t 2009-09-01 01:13:40 -07:00
e100.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-02 00:32:56 -07:00
e2100.c
eepro.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
eexpress.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
eexpress.h
enc28j60.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
enc28j60_hw.h
epic100.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
eql.c netdev: convert pseudo drivers to netdev_tx_t 2009-09-01 01:13:40 -07:00
es3210.c
eth16i.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
ethoc.c drivers: Kill now superfluous ->last_rx stores 2009-09-02 23:07:36 -07:00
ewrk3.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
ewrk3.h
fealnx.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
fec.c fec: don't enable irqs in hard irq context 2009-09-02 23:46:06 -07:00
fec.h
fec_mpc52xx.c drivers/net: fixed drivers that support netpoll use ndo_start_xmit() 2009-08-23 19:51:03 -07:00
fec_mpc52xx.h
fec_mpc52xx_phy.c
forcedeth.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
fsl_pq_mdio.c
fsl_pq_mdio.h
gianfar.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2009-09-14 10:37:28 -07:00
gianfar.h
gianfar_ethtool.c
gianfar_sysfs.c
hamachi.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
hp-plus.c
hp.c
hp100.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
hp100.h
hplance.c
hplance.h
hydra.c net: fix hydra printk format warning 2009-09-07 01:56:52 -07:00
ibmlana.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
ibmlana.h
ibmveth.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
ibmveth.h
ifb.c netdev: convert pseudo drivers to netdev_tx_t 2009-09-01 01:13:40 -07:00
ioc3-eth.c
ipg.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
ipg.h
isa-skeleton.c
iseries_veth.c
jazzsonic.c
jme.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
jme.h
Kconfig Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-02 00:32:56 -07:00
korina.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
ks8842.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
ks8851.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
ks8851.h
lance.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
lasi_82596.c
lib8390.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
lib82596.c
LICENSE.SRC
ll_temac.h
ll_temac_main.c
ll_temac_mdio.c
lne390.c
loopback.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
lp486e.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
mac89x0.c
mac8390.c
macb.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
macb.h
mace.c
mace.h
macmace.c
macsonic.c
macvlan.c macvlan: add multiqueue capability 2009-09-03 20:02:13 -07:00
Makefile
mdio.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
meth.c
meth.h
mii.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
mipsnet.c
mv643xx_eth.c mv643xx_eth.c: remove unused txq_set_wrr() 2009-09-11 12:54:49 -07:00
mvme147.c
myri_sbus.c
myri_sbus.h
natsemi.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
ne-h8300.c
ne.c
ne2.c
ne2k-pci.c
ne3210.c
netconsole.c
netx-eth.c
ni52.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
ni52.h
ni65.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
ni65.h
ni5010.c
ni5010.h
niu.c niu: Use resource_size instead of private function 2009-09-09 01:41:30 -07:00
niu.h
ns83820.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
pasemi_mac.c
pasemi_mac.h
pasemi_mac_ethtool.c
pci-skeleton.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
pcnet32.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
plip.c
ppp_async.c
ppp_deflate.c
ppp_generic.c netdev: convert pseudo drivers to netdev_tx_t 2009-09-01 01:13:40 -07:00
ppp_mppe.c
ppp_mppe.h
ppp_synctty.c
pppoe.c
pppol2tp.c
pppox.c
ps3_gelic_net.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
ps3_gelic_net.h
ps3_gelic_wireless.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
ps3_gelic_wireless.h
qla3xxx.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
qla3xxx.h
r6040.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
r8169.c r8169: Fix warning in rtl8169_start_xmit(). 2009-09-07 02:03:37 -07:00
rionet.c
rrunner.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
rrunner.h netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
s2io-regs.h
s2io.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
s2io.h s2io: Generate complete messages using single line DBG_PRINTs 2009-08-30 22:35:11 -07:00
s6gmac.c
sb1000.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
sb1250-mac.c
sc92031.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
seeq8005.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
seeq8005.h
sgiseeq.c
sgiseeq.h
sh_eth.c net: sh_eth: add value of ether_link pin in platform_data 2009-08-29 00:19:35 -07:00
sh_eth.h net: sh_eth: add value of ether_link pin in platform_data 2009-08-29 00:19:35 -07:00
sis190.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
sis900.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
sis900.h
skge.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
skge.h
sky2.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
sky2.h sky2: Use 32bit read to read Y2_VAUX_AVAIL 2009-09-01 17:40:44 -07:00
slhc.c
slip.c netdev: convert pseudo drivers to netdev_tx_t 2009-09-01 01:13:40 -07:00
slip.h
smc-mca.c
smc-ultra.c
smc-ultra32.c
smc91x.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-02 00:32:56 -07:00
smc91x.h
smc911x.c
smc911x.h
smc9194.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
smc9194.h
smsc911x.c drivers: Kill now superfluous ->last_rx stores 2009-09-02 23:07:36 -07:00
smsc911x.h
smsc9420.c drivers: Kill now superfluous ->last_rx stores 2009-09-02 23:07:36 -07:00
smsc9420.h
sni_82596.c
sonic.c
sonic.h
Space.c
spider_net.c
spider_net.h
spider_net_ethtool.c
starfire.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c
sunbmac.c
sunbmac.h
sundance.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
sungem.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
sungem.h
sungem_phy.c
sungem_phy.h
sunhme.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
sunhme.h
sunlance.c
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c
tehuti.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
tehuti.h
tg3.c tg3: Fix return ring size breakage 2009-09-11 16:50:16 -07:00
tg3.h tg3: Add MDIO bus address assignments 2009-09-02 00:44:09 -07:00
tlan.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
tlan.h
tsi108_eth.c
tsi108_eth.h
tun.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2009-09-14 10:37:28 -07:00
typhoon.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
typhoon.h
ucc_geth.c ucc_geth: Fix hangs after switching from full to half duplex 2009-09-11 12:54:45 -07:00
ucc_geth.h ucc_geth: Implement suspend/resume and Wake-On-LAN support 2009-08-30 21:51:47 -07:00
ucc_geth_ethtool.c ucc_geth: Implement suspend/resume and Wake-On-LAN support 2009-08-30 21:51:47 -07:00
veth.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
via-rhine.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-02 00:32:56 -07:00
via-velocity.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
via-velocity.h
virtio_net.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
wd.c
xen-netfront.c netdev: drivers should make ethtool_ops const 2009-09-02 01:03:33 -07:00
xilinx_emaclite.c drivers: Kill now superfluous ->last_rx stores 2009-09-02 23:07:36 -07:00
xtsonic.c
yellowfin.c netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations 2009-09-03 20:02:11 -07:00
znet.c netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
zorro8390.c