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>
No related branches found
No related tags found
Showing
- include/linux/tcp.h 3 additions, 0 deletionsinclude/linux/tcp.h
- include/net/inet_connection_sock.h 8 additions, 0 deletionsinclude/net/inet_connection_sock.h
- include/net/mptcp.h 10 additions, 7 deletionsinclude/net/mptcp.h
- net/ipv4/inet_connection_sock.c 1 addition, 5 deletionsnet/ipv4/inet_connection_sock.c
- net/ipv4/tcp_minisocks.c 1 addition, 1 deletionnet/ipv4/tcp_minisocks.c
- net/mptcp/protocol.c 0 additions, 7 deletionsnet/mptcp/protocol.c
- net/mptcp/subflow.c 12 additions, 6 deletionsnet/mptcp/subflow.c
Loading
Please register or sign in to comment