On 15/05/20 - 19:22:15, Paolo Abeni wrote:
> MP_JOIN subflows must not land into the accept queue.
> Currently tcp_check_req() calls an mptcp specific helper
> to detect such scenario.
> 
> Such helper leverages the subflow context to check for
> MP_JOIN subflows. We need to deal also with MP JOIN
> failures, even when the subflow context is not available
> due allocation failure.
> 
> A possible solution would be changing the syn_recv_sock()
> signature to allow returning a more descriptive action/
> error code and deal with that in tcp_check_req().
> 
> Since the above need is MPTCP specific, this patch instead
> uses a TCP request socket hole to add a MPTCP specific flag.
> Such flag is used by the MPTCP syn_recv_sock() to tell
> tcp_check_req() how to deal with the request socket.
> 
> This change is a no-op for !MPTCP build, and makes the
> MPTCP code simpler. It allows also the next patch to deal
> correctly with MP JOIN failure.
> 
> v1 -> v2:
>  - be more conservative on drop_req initialization (Mat)
> 
> RFC -> v1:
>  - move the drop_req bit inside tcp_request_sock (Eric)
> 
> Signed-off-by: Paolo Abeni <pab...@redhat.com>
> ---
>  include/linux/tcp.h      |  3 +++
>  include/net/mptcp.h      | 17 ++++++++++-------
>  net/ipv4/tcp_minisocks.c |  2 +-
>  net/mptcp/protocol.c     |  7 -------
>  net/mptcp/subflow.c      |  3 +++
>  5 files changed, 17 insertions(+), 15 deletions(-)


Reviewed-by: Christoph Paasch <cpaa...@apple.com>

Reply via email to