linux-uconsole/drivers/net
Eric Dumazet fe30937b65 bonding: fix bond_get_stats()
bond_get_stats() can be called from rtnetlink (with RTNL held)
or from /proc/net/dev seq handler (with RCU held)

The logic added in commit 5f0c5f73e5 ("bonding: make global bonding
stats more reliable") kind of assumed only one cpu could run there.

If multiple threads are reading /proc/net/dev, stats can be really
messed up after a while.

A second problem is that some fields are 32bit, so we need to properly
handle the wrap around problem.

Given that RTNL is not always held, we need to use
bond_for_each_slave_rcu().

Fixes: 5f0c5f73e5 ("bonding: make global bonding stats more reliable")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Andy Gospodarek <gospo@cumulusnetworks.com>
Cc: Jay Vosburgh <j.vosburgh@gmail.com>
Cc: Veaceslav Falico <vfalico@gmail.com>
Reviewed-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-03-18 23:14:15 -04:00
..
appletalk
arcnet
bonding bonding: fix bond_get_stats() 2016-03-18 23:14:15 -04:00
caif
can can: rcar_can: Add r8a7795 support 2016-03-10 10:30:21 +01:00
cris
dsa net: dsa: make port_bridge_leave return void 2016-03-14 16:05:31 -04:00
ethernet net: bcmgenet: fix dma api length mismatch 2016-03-18 23:12:44 -04:00
fddi defxx: fix build warning 2016-01-25 10:51:52 -08:00
fjes
hamradio dmascc: Return correct error codes 2016-02-16 15:32:34 -05:00
hippi
hyperv hv_netvsc: Move subchannel waiting to rndis_filter_device_remove() 2016-03-07 15:37:50 -05:00
ieee802154 mrf24j40: add writeable missing reg 2016-02-23 20:29:40 +01:00
ipvlan vlan: propagate gso_max_segs 2016-03-17 21:05:01 -04:00
irda net/irda: bfin_sir: remove duplicate defines 2016-01-21 10:45:45 -08:00
phy phy: mdio-thunder: Fix some Kconfig typos 2016-03-18 23:02:03 -04:00
plip net: plip: use new parport device model 2016-01-09 21:02:05 -05:00
ppp ppp: ensure file->private_data can't be overridden 2016-03-16 19:35:06 -04:00
slip
team team: remove duplicate set of flag IFF_MULTICAST 2016-03-18 22:14:47 -04:00
usb lan78xx: add ndo_get_stats64 2016-03-18 22:27:48 -04:00
vmxnet3 vmxnet3: fix lock imbalance in vmxnet3_tq_xmit() 2016-03-14 13:10:29 -04:00
wan farsync: fix off-by-one bug in fst_add_one 2016-03-14 13:09:49 -04:00
wimax
wireless ath9k: fix misleading indentation 2016-03-14 13:09:49 -04:00
xen-netback xen-netback: reduce log spam 2016-03-13 22:08:01 -04:00
dummy.c
eql.c
geneve.c gro: Defer clearing of flush bit in tunnel paths 2016-03-13 15:01:00 -04:00
ifb.c
Kconfig macsec: introduce IEEE 802.1AE driver 2016-03-13 22:40:24 -04:00
LICENSE.SRC
loopback.c
macsec.c macsec: introduce IEEE 802.1AE driver 2016-03-13 22:40:24 -04:00
macvlan.c vlan: propagate gso_max_segs 2016-03-17 21:05:01 -04:00
macvtap.c macvtap: always pass ethernet header in linear 2016-03-11 14:45:21 -05:00
Makefile macsec: introduce IEEE 802.1AE driver 2016-03-13 22:40:24 -04:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c net/tun: implement ndo_set_rx_headroom 2016-03-01 15:54:30 -05:00
veth.c veth: implement ndo_set_rx_headroom 2016-03-01 15:54:31 -05:00
virtio_net.c virtio_net: validate ethtool port setting and explain the user validation 2016-02-11 11:55:38 -05:00
vrf.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-03-08 12:34:12 -05:00
vxlan.c gro: Defer clearing of flush bit in tunnel paths 2016-03-13 15:01:00 -04:00
xen-netfront.c xen-netfront: request Tx response events more often 2016-01-28 16:08:55 -08:00