lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 349/846] mptcp: fix opt size when sending DSS + MP_FAIL
    Date
    From: Matthieu Baerts <matthieu.baerts@tessares.net>

    [ Upstream commit 04fac2cae9422a3401c172571afbcfdd58fa5c7e ]

    When these two options had to be sent -- which is not common -- the DSS
    size was not being taken into account in the remaining size.

    Additionally in this situation, the reported size was only the one of
    the MP_FAIL which can cause issue if at the end, we need to write more
    in the TCP options than previously said.

    Here we use a dedicated variable for MP_FAIL size to keep the
    WARN_ON_ONCE() just after.

    Fixes: c25aeb4e0953 ("mptcp: MP_FAIL suboption sending")
    Acked-and-tested-by: Geliang Tang <geliang.tang@suse.com>
    Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/mptcp/options.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    diff --git a/net/mptcp/options.c b/net/mptcp/options.c
    index 0966855a7c251..f69a1cadb13fc 100644
    --- a/net/mptcp/options.c
    +++ b/net/mptcp/options.c
    @@ -823,10 +823,13 @@ bool mptcp_established_options(struct sock *sk, struct sk_buff *skb,
    if (mptcp_established_options_mp(sk, skb, snd_data_fin, &opt_size, remaining, opts))
    ret = true;
    else if (mptcp_established_options_dss(sk, skb, snd_data_fin, &opt_size, remaining, opts)) {
    + unsigned int mp_fail_size;
    +
    ret = true;
    - if (mptcp_established_options_mp_fail(sk, &opt_size, remaining, opts)) {
    - *size += opt_size;
    - remaining -= opt_size;
    + if (mptcp_established_options_mp_fail(sk, &mp_fail_size,
    + remaining - opt_size, opts)) {
    + *size += opt_size + mp_fail_size;
    + remaining -= opt_size - mp_fail_size;
    return true;
    }
    }
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 22:09    [W:4.123 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site