mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-10 07:10:27 +00:00
sctp: return true only for pathmtu update in sctp_transport_pl_toobig
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>
This commit is contained in:
parent
cc4665ca64
commit
75cf662c64
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user