]> git.baikalelectronics.ru Git - kernel.git/commit
mptcp: cope better with MP_JOIN failure
authorPaolo Abeni <pabeni@redhat.com>
Fri, 15 May 2020 17:22:17 +0000 (19:22 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 May 2020 19:30:13 +0000 (12:30 -0700)
commit74f69891c81da89168af9bd0055b6ec9a8e80311
treedd27101a3b5e26414458c2d0e9180a30d66025bd
parentf9b09db2abe9d267ea8ae83c58d596b80744281c
mptcp: cope better with MP_JOIN failure

Currently, on MP_JOIN failure we reset the child
socket, but leave the request socket untouched.

tcp_check_req will deal with it according to the
'tcp_abort_on_overflow' sysctl value - by default the
req socket will stay alive.

The above leads to inconsistent behavior on MP JOIN
failure, and bad listener overflow accounting.

This patch addresses the issue leveraging the infrastructure
just introduced to ask the TCP stack to drop the req on
failure.

The child socket is not freed anymore by subflow_syn_recv_sock(),
instead it's moved to a dead state and will be disposed by the
next sock_put done by the TCP stack, so that listener overflow
accounting is not affected by MP JOIN failure.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Christoph Paasch <cpaasch@apple.com>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/subflow.c