diff options
| author | Paolo Abeni <pabeni@redhat.com> | 2026-09-17 15:05:57 +0200 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-09-17 08:14:33 -0700 |
| commit | 2b0f561f21b27c40c91ea4975268a06092bd7e9c (patch) | |
| tree | c88af0230d14081ad30a6a3dcb886d3e5cb95633 /tools/perf/scripts/python/bin/stackcollapse-record | |
| parent | a5117e1eccac6ee3bd4aed7cacf8ebcb6b3eb309 (diff) | |
| download | linux-next-2b0f561f21b27c40c91ea4975268a06092bd7e9c.tar.gz linux-next-2b0f561f21b27c40c91ea4975268a06092bd7e9c.zip | |
mptcp: avoid unneeded actions on subflow reset
Once in a blue moon, the mptcp receive path can recursively call
mptcp_data_ready() via state change under unlucky error conditions, and
then try to hold the data lock again.
Break the recursion loop explicitly checking for the exceptional
condition.
Add a new flag instead of using an existing one like 'closing', to exit
early in subflow_state_change(), and explicitly flush the RX queue at
reset time.
This avoids unneeded processing to check for available data -- calling
get_mapping_status() and more on a dying subflow -- but also in error
reporting and worker scheduling.
Note that we must consume the currently peeked skb before invoking
mptcp_dss_corruption to avoid consuming it again after the eventual
reset has freed it.
Fixes: e32d262c89e2 ("mptcp: handle consistently DSS corruption")
Cc: stable@vger.kernel.org
Reported-by: Xinyang Ge <xinyang@anthropic.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20260917-net-mptcp-misc-fixes-7-3-rc4-v2-1-0cf5c72667c8@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/bin/stackcollapse-record')
0 files changed, 0 insertions, 0 deletions
