Eric Dumazet
cef401de7b
net: fix possible wrong checksum generation
...
Pravin Shelar mentioned that GSO could potentially generate
wrong TX checksum if skb has fragments that are overwritten
by the user between the checksum computation and transmit.
He suggested to linearize skbs but this extra copy can be
avoided for normal tcp skbs cooked by tcp_sendmsg().
This patch introduces a new SKB_GSO_SHARED_FRAG flag, set
in skb_shinfo(skb)->gso_type if at least one frag can be
modified by the user.
Typical sources of such possible overwrites are {vm}splice(),
sendfile(), and macvtap/tun/virtio_net drivers.
Tested:
$ netperf -H 7.7.8.84
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to
7.7.8.84 () port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 10.00 3959.52
$ netperf -H 7.7.8.84 -t TCP_SENDFILE
TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 7.7.8.84 ()
port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 10.00 3216.80
Performance of the SENDFILE is impacted by the extra allocation and
copy, and because we use order-0 pages, while the TCP_STREAM uses
bigger pages.
Reported-by: Pravin Shelar <pshelar@nicira.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-01-28 00:27:15 -05:00
..
accessibility
acpi
Merge branch 'acpi-assorted'
2013-01-04 23:10:29 +01:00
amba
Drivers: amba: remove __dev* attributes.
2013-01-03 15:57:02 -08:00
ata
Drivers: ata: remove __dev* attributes.
2013-01-03 15:57:03 -08:00
atm
Drivers: atm: remove __dev* attributes.
2013-01-03 15:57:04 -08:00
auxdisplay
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
base
Merge branch 'pm-sleep'
2013-01-06 00:36:17 +01:00
bcma
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-01-15 15:05:59 -05:00
block
Drivers: block: remove __dev* attributes.
2013-01-03 15:57:15 -08:00
bluetooth
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2012-12-12 18:07:07 -08:00
bus
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
cdrom
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
char
Drivers: char: remove __dev* attributes.
2013-01-03 15:57:15 -08:00
clk
ARM: arm-soc fixes for 3.8-rc
2013-01-08 18:53:56 -08:00
clocksource
Drivers: clocksource: remove __dev* attributes.
2013-01-03 15:57:15 -08:00
connector
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
cpufreq
cpufreq / governor: Fix problem with cpufreq_ondemand or cpufreq_conservative
2013-01-03 13:11:19 +01:00
cpuidle
cpuidle: fix lock contention in the idle path
2013-01-03 13:11:06 +01:00
crypto
Drivers: crypto: remove __dev* attributes.
2013-01-03 15:57:02 -08:00
dca
devfreq
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
dio
dma
ARM: arm-soc fixes for 3.8-rc
2013-01-08 18:53:56 -08:00
edac
Two error path fixes causing a crash and a Kconfig fix for an issue
2013-01-09 08:43:56 -08:00
eisa
extcon
firewire
firewire net: Use LL_RESERVED_SPACE(), HH_DATA_OFF().
2013-01-20 23:16:03 -05:00
firmware
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
gpio
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
gpu
udldrmfb: udl_get_edid: drop unneeded i--
2013-01-14 08:45:27 +10:00
hid
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
hsi
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
hv
hwmon
hwmon: (vexpress) Fix build error seen if CONFIG_OF_DEVICE is not set
2013-01-09 21:47:22 -08:00
hwspinlock
i2c
i2c: remove __dev* attributes from subsystem
2012-12-22 20:13:45 +01:00
ide
Drivers: ide: remove __dev* attributes.
2013-01-03 15:57:03 -08:00
idle
intel_idle: pr_debug information need separated
2013-01-03 13:11:05 +01:00
iio
Staging fixes for 3.8-rc3
2013-01-14 09:08:38 -08:00
infiniband
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-01-15 15:05:59 -05:00
input
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
2013-01-04 10:30:11 -08:00
iommu
Drivers: iommu: remove __dev* attributes.
2013-01-03 15:57:14 -08:00
ipack
TTY/Serial merge for 3.8-rc1
2012-12-11 14:08:47 -08:00
irqchip
ARM: arm-soc: Device-tree updates, take 2
2012-12-14 14:42:53 -08:00
isdn
isdn/gigaset: beautify ev-layer.c
2013-01-21 17:36:26 -05:00
leds
leds: leds-gpio: set devm_gpio_request_one() flags param correctly
2013-01-02 17:58:41 -08:00
lguest
lguest: fix typo
2012-12-18 15:19:06 +10:30
macintosh
Drivers: macintosh: remove __dev* attributes.
2013-01-03 15:57:14 -08:00
md
Miscellaneous device-mapper fixes, cleanups and performance improvements.
2012-12-21 17:08:06 -08:00
media
Drivers: media: remove __dev* attributes.
2013-01-03 15:57:02 -08:00
memory
Drivers: memory: remove __dev* attributes.
2013-01-03 15:57:14 -08:00
memstick
message
Drivers: message: remove __dev* attributes.
2013-01-03 15:57:14 -08:00
mfd
Drivers: mfd: remove __dev* attributes.
2013-01-03 15:57:14 -08:00
misc
mei: fix mismatch in mutex unlock-lock in mei_amthif_read()
2013-01-07 10:28:03 -08:00
mmc
Drivers: mmc: remove __dev* attributes.
2013-01-03 15:57:14 -08:00
mtd
Drivers: mtd: remove __dev* attributes.
2013-01-03 15:57:03 -08:00
net
net: fix possible wrong checksum generation
2013-01-28 00:27:15 -05:00
nfc
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
nubus
of
net: phy: remove flags argument from phy_{attach, connect, connect_direct}
2013-01-14 15:11:50 -05:00
oprofile
parisc
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
parport
Drivers: parport: remove __dev* attributes.
2013-01-03 15:57:03 -08:00
pci
pci: fix iov.c kernel-doc warnings
2013-01-10 14:35:23 -08:00
pcmcia
ARM: arm-soc: Header cleanups
2012-12-12 11:45:16 -08:00
pinctrl
ARM: arm-soc fixes for 3.8-rc
2013-01-08 18:53:56 -08:00
platform
asus-laptop: Fix potential invalid pointer dereference
2013-01-07 12:33:48 -05:00
pnp
PNP: Handle IORESOURCE_BITS in resource allocation
2013-01-03 13:10:53 +01:00
power
ARM: arm-soc fixes for 3.8-rc
2013-01-08 18:53:56 -08:00
pps
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
ps3
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
ptp
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2012-12-12 18:07:07 -08:00
pwm
pwm: Changes for v3.8-rc1
2012-12-19 08:19:07 -08:00
rapidio
Driver core updates for 3.8-rc1
2012-12-11 13:13:55 -08:00
regulator
Drivers: regulator: remove __dev* attributes.
2013-01-03 15:57:04 -08:00
remoteproc
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
rpmsg
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
rtc
drivers/rtc/rtc-da9055.c: fix cross-section reference
2013-01-11 14:54:54 -08:00
s390
qeth: Fix HiperSockets performance regression
2013-01-21 13:51:15 -05:00
sbus
Drivers: sbus: remove __dev* attributes.
2013-01-03 15:57:03 -08:00
scsi
Drivers: scsi: remove __dev* attributes.
2013-01-03 15:57:01 -08:00
sfi
sh
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
sn
Drivers: misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
spi
spi/sh-hspi: fix return value check in hspi_probe().
2012-12-19 15:11:41 +00:00
ssb
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-01-08 07:31:49 -08:00
staging
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-01-15 15:05:59 -05:00
target
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
2012-12-15 14:25:10 -08:00
tc
thermal
Drivers: thermal: remove __dev* attributes.
2013-01-03 15:57:02 -08:00
tty
Merge branch 'omap-for-v3.8/fixes-for-merge-window' into omap-for-v3.8/fixes-for-merge-window-v2
2012-12-16 11:28:10 -08:00
uio
ARM: arm-soc: SoC updates for 3.8
2012-12-12 12:05:15 -08:00
usb
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-01-15 15:05:59 -05:00
uwb
vfio
vhost
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
2012-12-15 14:25:10 -08:00
video
drivers/video/ssd1307fb.c: fix bit order bug in the byte translation function
2013-01-11 14:54:54 -08:00
virt
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
2012-12-18 09:58:09 -08:00
virtio
Drivers: virtio: remove __dev* attributes.
2013-01-03 15:57:01 -08:00
vlynq
Drivers: vlynq: remove __dev* attributes.
2013-01-03 15:57:01 -08:00
vme
w1
Drivers: w1: remove last __devexit_p() instance
2013-01-03 15:57:01 -08:00
watchdog
watchdog: twl4030_wdt: add DT support
2013-01-02 12:07:05 +01:00
xen
Drivers: xen: remove __dev* attributes.
2013-01-03 15:57:01 -08:00
zorro
Drivers: zorro: remove CONFIG_HOTPLUG usage
2013-01-03 15:57:01 -08:00
Kconfig
Makefile