Eric Dumazet
b617158dc0
tcp: be more careful in tcp_fragment()
...
Some applications set tiny SO_SNDBUF values and expect
TCP to just work. Recent patches to address CVE-2019-11478
broke them in case of losses, since retransmits might
be prevented.
We should allow these flows to make progress.
This patch allows the first and last skb in retransmit queue
to be split even if memory limits are hit.
It also adds the some room due to the fact that tcp_sendmsg()
and tcp_sendpage() might overshoot sk_wmem_queued by about one full
TSO skb (64KB size). Note this allowance was already present
in stable backports for kernels < 4.15
Note for < 4.15 backports :
tcp_rtx_queue_tail() will probably look like :
static inline struct sk_buff *tcp_rtx_queue_tail(const struct sock *sk)
{
struct sk_buff *skb = tcp_send_head(sk);
return skb ? tcp_write_queue_prev(sk, skb) : tcp_write_queue_tail(sk);
}
Fixes: f070ef2ac6 ("tcp: tcp_fragment() should apply sane memory limits")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Andrew Prout <aprout@ll.mit.edu>
Tested-by: Andrew Prout <aprout@ll.mit.edu>
Tested-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Tested-by: Michal Kubecek <mkubecek@suse.cz>
Acked-by: Neal Cardwell <ncardwell@google.com>
Acked-by: Yuchung Cheng <ycheng@google.com>
Acked-by: Christoph Paasch <cpaasch@apple.com>
Cc: Jonathan Looney <jtl@netflix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-07-21 20:41:24 -07:00
..
6lowpan
6lowpan: no need to check return value of debugfs_create functions
2019-07-06 12:50:01 +02:00
9p
9p pull request for inclusion in 5.13
2019-07-12 17:31:19 -07:00
802
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
8021q
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-06-22 08:59:24 -04:00
appletalk
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 372
2019-06-05 17:37:10 +02:00
atm
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
ax25
ax25: fix inconsistent lock state in ax25_destroy_timer
2019-06-16 14:22:37 -07:00
batman-adv
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-07-08 19:48:57 -07:00
bluetooth
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2019-07-11 10:55:49 -07:00
bpf
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206
2019-05-30 11:29:53 -07:00
bpfilter
Kbuild updates for v5.3
2019-07-12 16:03:16 -07:00
bridge
netfilter: bridge: make NF_TABLES_BRIDGE tristate
2019-07-19 18:08:14 +02:00
caif
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194
2019-05-30 11:29:22 -07:00
can
can: purge socket error queue on sock destruct
2019-06-07 23:03:54 +02:00
ceph
Lots of exciting things this time!
2019-07-18 11:05:25 -07:00
core
net: flow_offload: add flow_block structure and use it
2019-07-19 21:27:45 -07:00
dcb
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201
2019-05-30 11:29:52 -07:00
dccp
proc/sysctl: add shared variables for range check
2019-07-18 17:08:07 -07:00
decnet
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 53
2019-05-24 17:36:42 +02:00
dns_resolver
Revert "Merge tag 'keys-acl-20190703' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs"
2019-07-10 18:43:43 -07:00
dsa
net: flow_offload: add flow_block structure and use it
2019-07-19 21:27:45 -07:00
ethernet
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-06-07 11:00:14 -07:00
hsr
hsr: switch ->dellink() to ->ndo_uninit()
2019-07-11 14:37:45 -07:00
ieee802154
inet: fix various use-after-free in defrags units
2019-06-19 11:37:47 -04:00
ife
treewide: Add SPDX license identifier - Makefile/Kconfig
2019-05-21 10:50:46 +02:00
ipv4
tcp: be more careful in tcp_fragment()
2019-07-21 20:41:24 -07:00
ipv6
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf
2019-07-19 21:25:10 -07:00
iucv
net/af_iucv: always register net_device notifier
2019-06-19 16:26:33 -04:00
kcm
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
key
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-07-08 19:48:57 -07:00
l2tp
ipv6: elide flowlabel check if no exclusive leases exist
2019-07-08 19:38:03 -07:00
l3mdev
ipv6: convert major tx path to use RT6_LOOKUP_F_DST_NOREF
2019-06-23 13:24:17 -07:00
lapb
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-06-17 20:20:36 -07:00
llc
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 281
2019-06-05 17:36:36 +02:00
mac80211
mac80211: don't warn about CW params when not using them
2019-07-20 21:40:32 +02:00
mac802154
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174
2019-05-30 11:26:41 -07:00
mpls
proc/sysctl: add shared variables for range check
2019-07-18 17:08:07 -07:00
ncsi
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
netfilter
net: flow_offload: add flow_block structure and use it
2019-07-19 21:27:45 -07:00
netlabel
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13
2019-05-21 11:28:45 +02:00
netlink
net: remove empty netlink_tap_exit_net
2019-06-14 19:50:33 -07:00
netrom
netrom: fix a memory leak in nr_rx_frame()
2019-07-01 19:00:52 -07:00
nfc
nfc: fix potential illegal memory access
2019-07-08 12:46:24 -07:00
nsh
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
openvswitch
net: openvswitch: rename flow_stats to sw_flow_stats
2019-07-19 21:27:45 -07:00
packet
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-06-27 21:06:39 -07:00
phonet
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 336
2019-06-05 17:37:07 +02:00
psample
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
qrtr
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284
2019-06-05 17:36:37 +02:00
rds
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-07-19 10:06:06 -07:00
rfkill
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
rose
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
rxrpc
proc/sysctl: add shared variables for range check
2019-07-18 17:08:07 -07:00
sched
net: sched: verify that q!=NULL before setting q->flags
2019-07-21 11:49:53 -07:00
sctp
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-07-19 10:06:06 -07:00
smc
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-06-27 21:06:39 -07:00
strparser
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-06-22 08:59:24 -04:00
sunrpc
Merge branch 'work.mount0' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2019-07-19 10:42:02 -07:00
switchdev
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
tipc
tipc: Fix a typo
2019-07-21 11:41:01 -07:00
tls
net/tls: fix socket wmem accounting on fallback with netem
2019-07-08 20:21:10 -07:00
unix
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-06-07 11:00:14 -07:00
vmw_vsock
vsock/virtio: fix flush of works during the .remove()
2019-07-08 15:35:17 -07:00
wimax
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 268
2019-06-05 17:30:29 +02:00
wireless
pci-v5.3-changes
2019-07-15 20:44:49 -07:00
x25
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 41
2019-05-24 17:27:12 +02:00
xdp
xdp: fix potential deadlock on socket mutex
2019-07-12 15:02:21 +02:00
xfrm
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-07-08 19:48:57 -07:00
compat.c
uio: make import_iovec()/compat_import_iovec() return bytes on success
2019-05-31 15:30:03 -06:00
Kconfig
net: ipv4: move tcp_fastopen server side code to SipHash library
2019-06-17 13:56:26 -07:00
Makefile
socket.c
Merge branch 'work.mount0' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2019-07-19 10:42:02 -07:00
sysctl_net.c