From: Matthieu Baerts (NGI0) Date: Fri, 28 Feb 2025 14:38:39 +0000 (+0100) Subject: mptcp: pm: exit early with ADD_ADDR echo if possible X-Git-Tag: v6.15-rc1~160^2~183^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f0de92479a098ba930506ed2e715a7aad3887ec1;p=thirdparty%2Fkernel%2Flinux.git mptcp: pm: exit early with ADD_ADDR echo if possible When the userspace PM is used, or when the in-kernel limits are reached, there will be no need to schedule the PM worker to signal new addresses. That corresponds to pm->work_pending set to 0. In this case, an early exit can be done in mptcp_pm_add_addr_echoed() not to hold the PM lock, and iterate over the announced addresses list, not to schedule the worker anyway in this case. This is similar to what is done when a connection or a subflow has been established. Reviewed-by: Geliang Tang Signed-off-by: Matthieu Baerts (NGI0) Link: https://patch.msgid.link/20250228-net-next-mptcp-coverage-small-opti-v1-5-f933c4275676@kernel.org Signed-off-by: Jakub Kicinski --- diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 16cacce6c10fe..6c8cadf84f31f 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -251,6 +251,9 @@ void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk, pr_debug("msk=%p\n", msk); + if (!READ_ONCE(pm->work_pending)) + return; + spin_lock_bh(&pm->lock); if (mptcp_lookup_anno_list_by_saddr(msk, addr) && READ_ONCE(pm->work_pending))