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
atm
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
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
can
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
dccp
proc/sysctl: add shared variables for range check
2019-07-18 17:08:07 -07:00
decnet
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
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
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
mac80211
mac80211: don't warn about CW params when not using them
2019-07-20 21:40:32 +02:00
mac802154
mpls
proc/sysctl: add shared variables for range check
2019-07-18 17:08:07 -07:00
ncsi
netfilter
net: flow_offload: add flow_block structure and use it
2019-07-19 21:27:45 -07:00
netlabel
netlink
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
psample
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
qrtr
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
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
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
vmw_vsock
vsock/virtio: fix flush of works during the .remove()
2019-07-08 15:35:17 -07:00
wimax
wireless
pci-v5.3-changes
2019-07-15 20:44:49 -07:00
x25
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
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