From: Chenguang Zhao <chenguang.zhao@linux.dev>
To: mptcp@lists.linux.dev
Cc: Chenguang Zhao <zhaochenguang@kylinos.cn>,
Matthieu Baerts <matttbe@kernel.org>
Subject: [PATCH mptcp-net v2] mptcp: fix extra_subflows leak on failed passive join
Date: Wed, 1 Jul 2026 11:20:11 +0800 [thread overview]
Message-ID: <20260701032011.358940-1-chenguang.zhao@linux.dev> (raw)
In-Reply-To: <20260630095432.1340629-1-chenguang.zhao@linux.dev>
From: Chenguang Zhao <zhaochenguang@kylinos.cn>
mptcp_pm_allow_new_subflow() increments extra_subflows
before __mptcp_finish_join() on the passive MP_JOIN path.
On synchronous join failure the subflow is dropped without
calling mptcp_close_ssk(), so the counter is not rolled back.
Call mptcp_pm_close_subflow() when the join completion fails.
Fixes: 3e5014909b56 ("mptcp: cleanup MPJ subflow list handling")
Signed-off-by: Chenguang Zhao <zhaochenguang@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
v2:
Hi Matthieu,
Thanks for the review.
- I spotted this by reading the code. I don't have a reproducer
yet. I also see we already have a Packetdrill test for
synchronous connect failure (simult_connect.pkt), but not for
synchronous join failure. I'll add a similar Packetdrill test
for that case and send it in a follow-up patch.
- Add Fixes and Reviewd-by tag.
- I looked again at the history, and I think the Fixes tag
should point to 3e5014909b56 ("mptcp: cleanup MPJ subflow list
handling"), not 10f6d46c943d ("mptcp: fix race between MP_JOIN and close").
v1:
- https://lore.kernel.org/all/20260630095432.1340629-1-chenguang.zhao@linux.dev/
net/mptcp/protocol.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index cb9515f505aa..b32f0cd262a7 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -3907,6 +3907,7 @@ bool mptcp_finish_join(struct sock *ssk)
mptcp_data_unlock(parent);
if (!ret) {
+ mptcp_pm_close_subflow(msk);
err_prohibited:
subflow->reset_reason = MPTCP_RST_EPROHIBIT;
return false;
--
2.25.1
next prev parent reply other threads:[~2026-07-01 3:20 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-30 9:54 [PATCH mptcp-net] mptcp: fix extra_subflows leak on failed passive join Chenguang Zhao
2026-06-30 10:47 ` Matthieu Baerts
2026-07-03 9:37 ` Chenguang Zhao
2026-06-30 11:22 ` MPTCP CI
2026-07-01 3:20 ` Chenguang Zhao [this message]
2026-07-01 4:17 ` [PATCH mptcp-net v2] " MPTCP CI
2026-07-01 6:32 ` Geliang Tang
2026-07-06 15:07 ` Matthieu Baerts
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260701032011.358940-1-chenguang.zhao@linux.dev \
--to=chenguang.zhao@linux.dev \
--cc=matttbe@kernel.org \
--cc=mptcp@lists.linux.dev \
--cc=zhaochenguang@kylinos.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.