fe94800184
All of the subflows of a msk will be orphaned in mptcp_close(), which
means the subflows are in DEAD state. After then, DATA_FIN will be sent,
and the other side will response with a DATA_ACK for this DATA_FIN.
However, if the other side still has pending data, the data that received
on these subflows will not be passed to the msk, as they are DEAD and
subflow_data_ready() will not be called in tcp_data_ready(). Therefore,
these data can't be acked, and they will be retransmitted again and again,
until timeout.
Fix this by setting ssk->sk_socket and ssk->sk_wq to 'NULL', instead of
orphaning the subflows in __mptcp_close(), as Paolo suggested.
Fixes:
|
||
---|---|---|
.. | ||
bpf.c | ||
crypto_test.c | ||
crypto.c | ||
ctrl.c | ||
diag.c | ||
Kconfig | ||
Makefile | ||
mib.c | ||
mib.h | ||
mptcp_diag.c | ||
options.c | ||
pm_netlink.c | ||
pm_userspace.c | ||
pm.c | ||
protocol.c | ||
protocol.h | ||
sockopt.c | ||
subflow.c | ||
syncookies.c | ||
token_test.c | ||
token.c |