]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'mptcp-fix-MP_JOIN-failure-handling'
authorDavid S. Miller <davem@davemloft.net>
Fri, 15 May 2020 19:30:13 +0000 (12:30 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 May 2020 19:30:13 +0000 (12:30 -0700)
commitc781e47a552ce2e933e94e82b2d02eb057441f2f
treedd27101a3b5e26414458c2d0e9180a30d66025bd
parent0d638904997b356ee6b8fe5fe1665df0e2e8643a
parent74f69891c81da89168af9bd0055b6ec9a8e80311
Merge branch 'mptcp-fix-MP_JOIN-failure-handling'

Paolo Abeni says:

====================
mptcp: fix MP_JOIN failure handling

Currently if we hit an MP_JOIN failure on the third ack, the child socket is
closed with reset, but the request socket is not deleted, causing weird
behaviors.

The main problem is that MPTCP's MP_JOIN code needs to plug it's own
'valid 3rd ack' checks and the current TCP callbacks do not allow that.

This series tries to address the above shortcoming introducing a new MPTCP
specific bit in a 'struct tcp_request_sock' hole, and leveraging that to allow
tcp_check_req releasing the request socket when needed.

The above allows cleaning-up a bit current MPTCP hooking in tcp_check_req().

An alternative solution, possibly cleaner but more invasive, would be
changing the 'bool *own_req' syn_recv_sock() argument into 'int *req_status'
and let MPTCP set it to 'REQ_DROP'.

v1 -> v2:
 - be more conservative about drop_req initialization

RFC -> v1:
 - move the drop_req bit inside tcp_request_sock (Eric)
====================

Signed-off-by: David S. Miller <davem@davemloft.net>