linux/drivers/net/ethernet
John Fastabend 9cc00b51a3 ixgbe: ethtool: stats user buffer overrun
If the number of tx/rx queues changes the ethtool ioctl
ETHTOOL_GSTATS may overrun the userspace buffer. This
occurs because the general practice in user space to
query stats is to issue a ETHTOOL_GSSET cmd to learn the
buffer size needed, allocate the buffer, then call
ETHTOOL_GSTIRNGS and ETHTOOL_GSTATS. If the number of
real_num_queues is changed or flow control attributes
are changed after ETHTOOL_GSSET but before the
ETHTOOL_GSTRINGS/ETHTOOL_GSTATS a user space buffer
overrun occurs.

To fix the overrun always return the max buffer size
needed from get_sset_count() then return all strings
and stats from get_strings()/get_ethtool_stats().

This _will_ change the output from the ioctl() call
which could break applications and script parsing in
theory. I believe these changes should not break existing
tools because the only changes will be more {tx|rx}_queues
and the {tx|rx}_pb_* stats will always be returned.
Existing scripts already need to handle changing number
of queues because this occurs today depending on system
and current features. The {tx|rx}_pb_* stats are at the
end of the output and should be handled by scripts today
regardless.

Finally get_ethtool_stats and get_strings are free-form
outputs tools parsing these outputs should be defensive
anyways. In the end these updates are better then
having a tool segfault because of a buffer overrun.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2012-02-09 01:27:47 -08:00
..
3com
8390 ax88796: use an unique MDIO bus name. 2012-01-10 16:35:00 -08:00
adaptec net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
adi bfin_mac: use an unique MDIO bus name. 2012-01-10 16:35:00 -08:00
aeroflex net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
alteon
amd au1000-eth: use an unique MDIO bus name. 2012-01-10 16:35:00 -08:00
apple
atheros Sweep away N/A fw_version dustbunnies from the .get_drvinfo routine of a number of drivers 2011-11-22 16:43:32 -05:00
broadcom bnx2x: Fix mem leak in bnx2x_tpa_stop() if build_skb() fails. 2012-02-07 13:13:33 -05:00
brocade bna: fix sparse warnings/errors 2012-01-05 13:23:00 -05:00
cadence macb: use an unique MDIO bus name. 2012-01-10 16:35:00 -08:00
calxeda xgmac: cleanups 2012-01-05 13:23:00 -05:00
chelsio Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-01-08 13:21:22 -08:00
cirrus
cisco enic: fix compile when CONFIG_PCI_IOV is not enabled 2012-01-20 13:39:20 -05:00
davicom Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2011-12-02 13:49:21 -05:00
dec net: fix assignment of 0/1 to bool variables. 2011-12-19 22:27:29 -05:00
dlink module_param: make bool parameters really bool (net & drivers/net) 2011-12-19 22:27:29 -05:00
emulex ethtool: Null-terminate filename passed to ethtool_ops::flash_device 2012-02-01 14:47:17 -05:00
faraday net: ftgmac100/ftmac100: add missing interrupt.h include 2012-01-18 21:01:11 -05:00
freescale net: fec: correct phy_name buffer length when init phy_name 2012-01-31 16:17:25 -05:00
fujitsu
hp
i825xx
ibm ehea: make some functions and variables static 2012-01-17 10:04:43 -05:00
icplus icplus: mdio_write(), remove unnecessary for loop 2011-12-01 12:54:46 -05:00
intel ixgbe: ethtool: stats user buffer overrun 2012-02-09 01:27:47 -08:00
marvell Revert "skge: check for PCI dma mapping errors" 2012-02-07 12:51:10 -05:00
mellanox mlx4: fix DMA mapping leak when allocation fails 2012-02-06 14:42:28 -05:00
micrel Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-01-17 18:40:24 -08:00
microchip
myricom myri10ge: Fix typo of 'VMware' in comment. 2011-12-19 15:44:43 -05:00
natsemi Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k 2012-01-06 18:28:12 -08:00
neterion net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
nuvoton net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
nvidia forcedeath: Fix bql support for forcedeath 2011-12-02 12:39:12 -05:00
octeon
oki-semi pch_gbe: Do not abort probe on bad MAC 2012-01-18 16:41:36 -05:00
packetengines
pasemi pasemi_mac: Fix building as module 2011-12-06 00:48:59 -05:00
qlogic net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
racal
rdc r6040: fix typo in use of MCR0 register bits 2012-01-07 12:09:36 -08:00
realtek 8139cp: fix missing napi_gro_flush. 2012-01-08 19:20:33 -08:00
renesas net: sh_eth: fix skb_over_panic happen 2012-02-07 13:37:30 -05:00
seeq net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
sfc sfc: Remove now-unused filter function 2012-01-04 14:10:23 -05:00
sgi net: meth: Add set_rx_mode hook to fix ICMPv6 neighbor discovery 2011-12-27 13:17:34 -05:00
silan
sis Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-01-08 13:21:22 -08:00
smsc smsc911x: use an unique MDIO bus name. 2012-01-10 16:35:01 -08:00
stmicro stmmac: added PCI identifiers 2012-01-24 15:44:20 -05:00
sun sunhme/PCI: use list_for_each_entry() for bus->devices traversal 2011-12-19 16:13:36 -05:00
tehuti net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
ti drivers/net/ethernet/ti: Move call to PTR_ERR after reassignment 2012-02-02 14:35:12 -05:00
tile netdev: make net_device_ops const 2012-01-09 14:05:23 -08:00
toshiba net: enable TC35815 for MIPS again 2012-02-07 13:40:44 -05:00
tundra drivers/net/ethernet/tundra/tsi108_eth.c: add missing iounmap 2012-01-12 20:05:28 -08:00
via via-velocity: S3 resume fix. 2012-02-05 17:47:09 -05:00
xilinx net: ethernet: xilinx: Don't use NO_IRQ in xilinx 2011-12-21 15:42:50 -05:00
xircom
xscale ixp4xx-eth: use an unique MDIO bus name. 2012-01-10 16:35:01 -08:00
dnet.c dnet: use an unique MDIO bus name. 2012-01-10 16:35:00 -08:00
dnet.h
ethoc.c net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
fealnx.c
jme.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2011-12-02 13:49:21 -05:00
jme.h jme: PHY configuration for compatible issue 2011-11-27 19:21:09 -05:00
Kconfig net: add calxeda xgmac ethernet driver 2011-11-29 01:15:24 -05:00
korina.c net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
lantiq_etop.c lantiq_etop: use an unique MDIO bus name. 2012-01-10 16:35:00 -08:00
Makefile Driver specific changes 2012-01-09 14:39:22 -08:00
mipsnet.c
netx-eth.c
s6gmac.c s6gmac: use an unique MDIO bus name. 2012-01-10 16:35:01 -08:00