android_kernel_xiaomi_sm8350/drivers
Andy Gospodarek 2439f9ebd4 bonding: fix race that causes invalid statistics
I've seen reports of invalid stats in /proc/net/dev for bonding
interfaces, and found it's a pretty easy problem to reproduce.  Since
the current code zeros the bonding stats when a read is requested and a
pointer to that data is returned to the caller we cannot guarantee that
the caller has completely accessed the data before a successive call to
request the stats zeroes the stats again.

This patch creates a new stack variable to keep track of the updated
stats and copies the data from that variable into the bonding stats
structure.  This ensures that the value for any of the bonding stats
should not incorrectly return zero for any of the bonding statistics.
This does use more stack space and require an extra memcpy, but it seems
like a fair trade-off for consistently correct bonding statistics.

Signed-off-by: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Chris Snook <csnook@redhat.com>
Acked-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-03 04:28:13 -08:00
..
acorn/char
acpi ACPI: Print message before calling _PTS 2008-02-01 18:30:58 -05:00
amba
ata Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6 2008-02-02 14:29:33 +11:00
atm
auxdisplay
base PM: Make PM_TRACE more architecture independent 2008-02-01 18:30:54 -05:00
block USB: Remove unnecessary zeroing from ub 2008-02-01 14:34:47 -08:00
bluetooth
cdrom ide-cd: move lba_to_msf() and msf_to_lba() to <linux/cdrom.h> 2008-02-01 23:09:24 +01:00
char [AUDIT] add session id to audit messages 2008-02-01 14:06:51 -05:00
clocksource
connector
cpufreq
cpuidle
crypto
dca
dio
dma
edac Merge branch 'linux-2.6' 2008-01-31 11:25:51 +11:00
eisa
firewire firewire: fw-sbp2: Use sbp2 device-provided mgt orb timeout for logins 2008-01-30 22:22:29 +01:00
firmware
hid
hwmon
i2c PCI: Remove users of pci_enable_device_bars() 2008-02-01 15:04:27 -08:00
ide ide-tape: remove idetape_config_t typedef 2008-02-02 19:56:51 +01:00
ieee1394 ieee1394: sbp2: fix bogus s/g access change 2008-02-02 13:48:16 +01:00
infiniband [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
input [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
isdn
leds
lguest lguest: fix mis-merge against hpa's TSS renaming 2008-01-31 19:59:44 +11:00
macintosh ide: add 'init_default' and 'restore' arguments to ide_unregister() 2008-02-02 19:56:39 +01:00
mca
md
media [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
message
mfd
misc
mmc
mtd
net bonding: fix race that causes invalid statistics 2008-02-03 04:28:13 -08:00
nubus
of
oprofile
parisc
parport
pci Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6 2008-02-02 14:29:33 +11:00
pcmcia
pnp
power apm_power: check I.intval for zero value, we use it as the divisor 2008-02-02 02:44:34 +03:00
ps3
rapidio Merge branch 'linux-2.6' 2008-01-31 11:25:51 +11:00
rtc
s390
sbus
scsi ide-scsi: remove needless SELECT_DRIVE() call 2008-02-02 19:56:46 +01:00
serial m68knommu: use container_of in mcf.c 2008-02-01 21:00:01 +11:00
sh
sn
spi Merge branch 'linux-2.6' 2008-01-31 11:25:51 +11:00
ssb
tc
telephony
uio
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6 2008-02-02 14:29:33 +11:00
video USB: sisusb: *_ioctl32_conversion functions do not exist in recent kernels 2008-02-01 14:34:48 -08:00
virtio
w1
watchdog
xen
zorro
Kconfig
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus 2008-01-31 09:35:32 +11:00