linux/drivers/net/ethernet
Eric Dumazet 7f7bf1606f mlx4: fix use-after-free in mlx4_en_fold_software_stats()
My recent commit to get more precise rx/tx counters in ndo_get_stats64()
can lead to crashes at device dismantle, as Jesper found out.

We must prevent mlx4_en_fold_software_stats() trying to access
tx/rx rings if they are deleted.

Fix this by adding a test against priv->port_up in
mlx4_en_fold_software_stats()

Calling mlx4_en_fold_software_stats() from mlx4_en_stop_port()
allows us to eventually broadcast the latest/current counters to
rtnetlink monitors.

Fixes: 40931b8511 ("mlx4: give precise rx/tx bytes/packets counters")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-and-bisected-by: Jesper Dangaard Brouer <brouer@redhat.com>
Tested-by: Jesper Dangaard Brouer <brouer@redhat.com>
Cc: Tariq Toukan <tariqt@mellanox.com>
Cc: Saeed Mahameed <saeedm@dev.mellanox.co.il>
Acked-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-12-02 13:33:32 -05:00
..
3com net: 3com: typhoon: fix typhoon_get_link_ksettings 2016-11-09 13:25:14 -05:00
8390 net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
adaptec net: adaptec: starfire: use new api ethtool_{get|set}_link_ksettings 2016-11-09 13:25:12 -05:00
adi net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
aeroflex net: phy: expose phy_aneg_done API for use by drivers 2016-11-13 00:56:26 -05:00
agere ethernet: use core min/max MTU checking 2016-10-18 11:34:22 -04:00
allwinner net: ethernet: sun4i-emac: Read rxhdr in CPU byte-order 2016-11-15 22:05:54 -05:00
alteon net: alteon: acenic: use new api ethtool_{get|set}_link_ksettings 2016-11-09 13:25:12 -05:00
altera net: ethernet: altera_tse: add support for SGMII PCS 2016-12-02 10:36:47 -05:00
amazon net: ena: use setup_timer() and mod_timer() 2016-10-26 17:21:59 -04:00
amd net: atarilance: use %8ph for printing hex string 2016-12-02 12:03:35 -05:00
apm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-15 10:54:36 -05:00
apple net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
arc net: arc_emac: add dependencies on associated arches and compile test 2016-11-29 18:57:36 -05:00
atheros alx: enable multiple tx queues 2016-11-15 22:46:30 -05:00
aurora net: nb8800: Utilize phy_ethtool_nway_reset 2016-11-15 16:33:35 -05:00
broadcom Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-26 23:42:21 -05:00
brocade net: brocade: bna: use new api ethtool_{get|set}_link_ksettings 2016-11-30 10:29:02 -05:00
cadence Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-22 13:27:16 -05:00
calxeda ethernet: use core min/max MTU checking 2016-10-18 11:34:22 -04:00
cavium net: thunderx: Fix transmit queue timeout issue 2016-12-02 13:32:59 -05:00
chelsio cxgb4: fix memory leak on txq_info 2016-11-25 16:09:50 -05:00
cirrus net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
cisco enic: set skb->hash type properly 2016-11-02 15:32:53 -04:00
davicom net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
dec net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
dlink ethernet/dlink: use core min/max MTU checking 2016-10-18 11:34:20 -04:00
emulex Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-22 13:27:16 -05:00
ezchip net: nps_enet: Fix module autoload 2016-10-17 13:03:02 -04:00
faraday net/faraday: Stop NCSI device on shutdown 2016-10-04 02:11:51 -04:00
freescale ptp: gianfar: Use high resolution frequency method. 2016-11-27 15:26:15 -05:00
fujitsu net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
hisilicon Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-15 10:54:36 -05:00
hp net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
i825xx net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
ibm ehea: Remove unnecessary memset of stats in netdev private data 2016-11-30 14:26:26 -05:00
intel ptp: igb: Use the high resolution frequency method. 2016-11-09 21:19:53 -05:00
marvell Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-26 23:42:21 -05:00
mediatek net: ethernet: mediatek: use dev_kfree_skb_any instead of dev_kfree_skb 2016-10-20 14:47:52 -04:00
mellanox mlx4: fix use-after-free in mlx4_en_fold_software_stats() 2016-12-02 13:33:32 -05:00
micrel ethernet: use core min/max MTU checking 2016-10-18 11:34:22 -04:00
microchip net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
moxa net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
myricom myri10ge: fix typo in parameter description 2016-10-20 14:47:53 -04:00
natsemi net: ns83820: use dev_kfree_skb_irq instead of kfree_skb 2016-10-26 17:21:59 -04:00
neterion ethernet/neterion: use core min/max MTU checking 2016-10-18 11:34:20 -04:00
netronome bpf, xdp: drop rcu_read_lock from bpf_prog_run_xdp and move to caller 2016-12-02 11:06:24 -05:00
nuvoton net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
nvidia ethernet: use core min/max MTU checking 2016-10-18 11:34:22 -04:00
nxp net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
oki-semi ethernet: use core min/max MTU checking 2016-10-18 11:34:22 -04:00
packetengines net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
pasemi ethernet: use core min/max MTU checking 2016-10-18 11:34:22 -04:00
qlogic qed: Add iSCSI out of order packet handling. 2016-12-02 12:44:38 -05:00
qualcomm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-15 10:54:36 -05:00
rdc net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
realtek Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-30 12:42:58 -04:00
renesas net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
rocker Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-30 12:42:58 -04:00
samsung ethernet: use core min/max MTU checking 2016-10-18 11:34:22 -04:00
seeq net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
sfc sfc: remove RESET_TYPE_RX_RECOVERY 2016-12-01 15:39:38 -05:00
sgi net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
silan net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
sis net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
smsc net: ethernet: smsc9420: Utilize phy_ethtool_nway_reset 2016-11-15 16:33:35 -05:00
stmicro stmmac: fix comments, make debug output consistent 2016-11-29 19:53:22 -05:00
sun Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-22 13:27:16 -05:00
synopsys Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-26 23:42:21 -05:00
tehuti ethernet: use core min/max MTU checking 2016-10-18 11:34:22 -04:00
ti net: ethernet: ti: cpsw: split tx budget according between channels 2016-11-30 14:37:14 -05:00
tile ethernet/tile: use core min/max MTU checking 2016-10-18 11:34:21 -04:00
toshiba Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-15 10:54:36 -05:00
tundra net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
via ethernet: use core min/max MTU checking 2016-10-18 11:34:22 -04:00
wiznet net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
xilinx net: ethernet: ll_temac: Utilize phy_ethtool_nway_reset 2016-11-15 16:33:35 -05:00
xircom net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
xscale net: ethernet: ixp4xx_eth: Utilize phy_ethtool_nway_reset 2016-11-15 16:33:35 -05:00
dnet.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
dnet.h
ec_bhf.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
ethoc.c net: ethoc: Implement ethtool::nway_reset 2016-11-16 13:44:00 -05:00
fealnx.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
jme.c ethernet: use net core MTU range checking in more drivers 2016-10-20 14:51:08 -04:00
jme.h
Kconfig sfc: separate out SFC4000 ("Falcon") support into new sfc-falcon driver 2016-11-30 10:16:58 -05:00
korina.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
lantiq_etop.c net: ethernet: lantiq_etop: Utilize phy_ethtool_nway_reset 2016-11-15 16:33:35 -05:00
Makefile sfc: separate out SFC4000 ("Falcon") support into new sfc-falcon driver 2016-11-30 10:16:58 -05:00
netx-eth.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00