diff options
| author | Yiqi Sun <sunyiqixm@gmail.com> | 2026-09-15 17:50:17 +0800 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-09-18 17:24:10 -0700 |
| commit | d2c31b837406395e576afeb25958c98e9938f3f6 (patch) | |
| tree | 11f9eb058ba877ac4129008ad12f5a90d5c3ec96 /tools/perf/scripts/python/stackcollapse.py | |
| parent | 6c01564da38207b8cd1f86365fabf45963f394b2 (diff) | |
| download | linux-d2c31b837406395e576afeb25958c98e9938f3f6.tar.gz linux-d2c31b837406395e576afeb25958c98e9938f3f6.zip | |
sctp: avoid livelock while updating retransmit path
sctp_assoc_update_retran_path() can loop forever when every remaining
transport, including retran_path, is SCTP_UNCONFIRMED: the state check
runs before the wraparound test, so the loop cannot observe that it has
completed a full pass.
Fix this by considering a transport only when it is not UNCONFIRMED,
then checking whether the walk has returned to retran_path. This makes
the full-pass termination independent of the transport state while
preserving the existing fallback selection semantics.
Also restore the NULL guard around the retran_path assignment. In the
all-UNCONFIRMED case there is no eligible replacement transport, and
installing NULL would leave later retransmit-path users and the debug
print with a NULL path.
Fixes: 4c47af4d5eb2 ("net: sctp: rework multihoming retransmission path selection to rfc4960")
Signed-off-by: Yiqi Sun <sunyiqixm@gmail.com>
Acked-by: Xin Long <lucien.xin@gmail.com>
Link: https://patch.msgid.link/20260915095017.942213-1-sunyiqixm@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions
