android_kernel_google_msm/net
lucien 8a26248a33 sctp: start t5 timer only when peer rwnd is 0 and local state is SHUTDOWN_PENDING
commit 8a0d19c5ed417c78d03f4e0fa7215e58c40896d8 upstream.

when A sends a data to B, then A close() and enter into SHUTDOWN_PENDING
state, if B neither claim his rwnd is 0 nor send SACK for this data, A
will keep retransmitting this data until t5 timeout, Max.Retrans times
can't work anymore, which is bad.

if B's rwnd is not 0, it should send abort after Max.Retrans times, only
when B's rwnd == 0 and A's retransmitting beyonds Max.Retrans times, A
will start t5 timer, which is also commit f8d9605243 ("sctp: Enforce
retransmission limit during shutdown") means, but it lacks the condition
peer rwnd == 0.

so fix it by adding a bit (zero_window_announced) in peer to record if
the last rwnd is 0. If it was, zero_window_announced will be set. and use
this bit to decide if start t5 timer when local.state is SHUTDOWN_PENDING.

Fixes: commit f8d9605243 ("sctp: Enforce retransmission limit during shutdown")
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 3.2: change sack_needed to bitfield as done earlier upstream]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Zefan Li <lizefan@huawei.com>
2016-10-26 23:15:35 +08:00
..
9p 9p: forgetting to cancel request on interrupted zero-copy RPC 2015-10-22 09:20:07 +08:00
802
8021q
appletalk
atm atm: deal with setting entry before mkip was called 2016-03-21 09:17:56 +08:00
ax25 net: add validation for the socket syscall protocol argument 2016-03-21 09:17:53 +08:00
batman-adv
bluetooth Bluetooth: Fix invalid length check in l2cap_information_rsp() 2015-04-14 17:34:02 +08:00
bridge bridge: multicast: restore router configuration on port link down/up 2015-10-22 09:20:06 +08:00
caif caif: remove wrong dev_net_set() call 2015-04-14 17:33:59 +08:00
can can: add missing initialisations in CAN related skbuffs 2015-06-19 11:40:23 +08:00
ceph crush: fix a bug in tree bucket decode 2015-10-22 09:20:07 +08:00
core net/neighbour: fix crash at dumping device-agnostic proxy entries 2016-10-26 23:15:30 +08:00
dcb
dccp
decnet net: add validation for the socket syscall protocol argument 2016-03-21 09:17:53 +08:00
dns_resolver dns_resolver: Null-terminate the right string 2014-07-28 07:06:46 -07:00
dsa
econet
ethernet
ieee802154
ipv4 tcp: md5: fix lockdep annotation 2016-10-26 23:15:29 +08:00
ipv6 net: ip6mr: fix static mfc/dev leaks on table destruction 2016-10-26 23:15:30 +08:00
ipx
irda net: add validation for the socket syscall protocol argument 2016-03-21 09:17:53 +08:00
iucv
key net: Fix RCU splat in af_key 2016-03-21 09:17:52 +08:00
l2tp l2tp: fix race while getting PMTU on PPP pseudo-wire 2014-12-01 18:02:45 +08:00
lapb
llc
mac80211 mac80211: mesh: fix call_rcu() usage 2016-10-26 23:15:29 +08:00
netfilter netfilter: nf_conntrack: fix RCU race in nf_conntrack_find_get 2016-03-21 09:17:56 +08:00
netlabel
netlink
netrom
nfc
openvswitch net: make skb_gso_segment error handling more robust 2015-06-19 11:40:33 +08:00
packet packet: avoid out of bounds read in round robin fanout 2015-10-22 09:20:05 +08:00
phonet
rds RDS: fix race condition when sending a message on unbound socket 2016-03-21 09:17:54 +08:00
rfkill
rose NET: ROSE: Don't dereference NULL neighbour pointer. 2015-09-18 09:20:47 +08:00
rxrpc
sched
sctp sctp: start t5 timer only when peer rwnd is 0 and local state is SHUTDOWN_PENDING 2016-10-26 23:15:35 +08:00
sunrpc SUNRPC: xs_reset_transport must mark the connection as disconnected 2016-04-27 18:55:16 +08:00
tipc
unix af_unix: Guard against other == sk in unix_dgram_sendmsg 2016-03-21 09:17:57 +08:00
wanrouter
wimax
wireless nl80211: ignore HT/VHT capabilities without QoS/WMM 2015-06-19 11:40:28 +08:00
x25
xfrm net: make skb_gso_segment error handling more robust 2015-06-19 11:40:33 +08:00
compat.c net: compat: Update get_compat_msghdr() to match copy_msghdr_from_user() behaviour 2015-04-14 17:34:04 +08:00
Kconfig
Makefile
nonet.c
socket.c net: socket: Fix the wrong returns for recvmsg and sendmsg 2015-09-18 09:20:46 +08:00
sysctl_net.c