lkml.org 
[lkml]   [2021]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 545/917] sctp: return true only for pathmtu update in sctp_transport_pl_toobig
    Date
    From: Xin Long <lucien.xin@gmail.com>

    [ Upstream commit 75cf662c64dd8543f56c329c69eba18141c8fd9f ]

    sctp_transport_pl_toobig() supposes to return true only if there's
    pathmtu update, so that in sctp_icmp_frag_needed() it would call
    sctp_assoc_sync_pmtu() and sctp_retransmit(). This patch is to fix
    these return places in sctp_transport_pl_toobig().

    Fixes: 836964083177 ("sctp: do state transition when receiving an icmp TOOBIG packet")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/sctp/transport.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    diff --git a/net/sctp/transport.c b/net/sctp/transport.c
    index 1f2dfad768d52..133f1719bf1b7 100644
    --- a/net/sctp/transport.c
    +++ b/net/sctp/transport.c
    @@ -368,6 +368,7 @@ static bool sctp_transport_pl_toobig(struct sctp_transport *t, u32 pmtu)

    t->pl.pmtu = SCTP_BASE_PLPMTU;
    t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);
    + return true;
    }
    } else if (t->pl.state == SCTP_PL_SEARCH) {
    if (pmtu >= SCTP_BASE_PLPMTU && pmtu < t->pl.pmtu) {
    @@ -378,11 +379,10 @@ static bool sctp_transport_pl_toobig(struct sctp_transport *t, u32 pmtu)
    t->pl.probe_high = 0;
    t->pl.pmtu = SCTP_BASE_PLPMTU;
    t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);
    + return true;
    } else if (pmtu > t->pl.pmtu && pmtu < t->pl.probe_size) {
    t->pl.probe_size = pmtu;
    t->pl.probe_count = 0;
    -
    - return false;
    }
    } else if (t->pl.state == SCTP_PL_COMPLETE) {
    if (pmtu >= SCTP_BASE_PLPMTU && pmtu < t->pl.pmtu) {
    @@ -393,10 +393,11 @@ static bool sctp_transport_pl_toobig(struct sctp_transport *t, u32 pmtu)
    t->pl.probe_high = 0;
    t->pl.pmtu = SCTP_BASE_PLPMTU;
    t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);
    + return true;
    }
    }

    - return true;
    + return false;
    }

    bool sctp_transport_update_pmtu(struct sctp_transport *t, u32 pmtu)
    --
    2.33.0


    \
     
     \ /
      Last update: 2021-11-16 01:10    [W:4.275 / U:0.268 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site