[PATCH mptcp-next v3] Squash-to "mptcp: pm: init and release mptcp_pm_ops"

Gang Yan posted 1 patch 2 days, 22 hours ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/multipath-tcp/mptcp_net-next tags/patchew/20260702063002.127027-1-gang.yan@linux.dev
net/mptcp/pm.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
[PATCH mptcp-next v3] Squash-to "mptcp: pm: init and release mptcp_pm_ops"
Posted by Gang Yan 2 days, 22 hours ago
From: Gang Yan <yangang@kylinos.cn>

This patch removes the need to handle a NULL pm_ops in the fallback
path, and moves the rcu_read_lock\unlock into mptcp_pm_ops_init.

Following sashiko's comments, it also moves the pr_debug() before
bpf_module_put() in mptcp_pm_ops_release.

Signed-off-by: Gang Yan <yangang@kylinos.cn>
---
 net/mptcp/pm.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index 9dc7b41fb562..033f783d4990 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -1137,12 +1137,13 @@ void mptcp_pm_worker(struct mptcp_sock *msk)
 	spin_unlock_bh(&msk->pm.lock);
 }
 
-static void mptcp_pm_ops_init(struct mptcp_sock *msk,
-			      struct mptcp_pm_ops *pm_ops)
+static void mptcp_pm_ops_init(struct mptcp_sock *msk, const char *pm_name)
 {
+	struct mptcp_pm_ops *pm_ops;
+
+	pm_ops = mptcp_pm_find(pm_name);
 	if (!pm_ops || !bpf_try_module_get(pm_ops, pm_ops->owner)) {
-		pr_warn_once("pm %s fails, fallback to default pm",
-			     pm_ops->name);
+		pr_warn_once("pm %s fails, fallback to default pm", pm_name);
 		pm_ops = &mptcp_pm_kernel;
 	}
 
@@ -1161,9 +1162,9 @@ static void mptcp_pm_ops_release(struct mptcp_sock *msk)
 	if (pm_ops->release)
 		pm_ops->release(msk);
 
-	bpf_module_put(pm_ops, pm_ops->owner);
-
 	pr_debug("pm %s released\n", pm_ops->name);
+
+	bpf_module_put(pm_ops, pm_ops->owner);
 }
 
 void mptcp_pm_destroy(struct mptcp_sock *msk)
@@ -1185,7 +1186,7 @@ void mptcp_pm_data_reset(struct mptcp_sock *msk)
 	WRITE_ONCE(pm->pm_type, pm_type);
 
 	rcu_read_lock();
-	mptcp_pm_ops_init(msk, mptcp_pm_find(pm_name));
+	mptcp_pm_ops_init(msk, pm_name);
 	rcu_read_unlock();
 }
 
-- 
2.43.0
Re: [PATCH mptcp-next v3] Squash-to "mptcp: pm: init and release mptcp_pm_ops"
Posted by Geliang Tang 2 days, 3 hours ago
Hi Gang,

Thanks for this v3.

On Thu, 2026-07-02 at 14:30 +0800, Gang Yan wrote:
> From: Gang Yan <yangang@kylinos.cn>
> 
> This patch removes the need to handle a NULL pm_ops in the fallback
> path, and moves the rcu_read_lock\unlock into mptcp_pm_ops_init.

The commit log doesn't match, but since this is a squash-to patch, it
may not be necessary to update the original commit log when merging.

Anyway, this patch LGTM. I've changed its status to "Queued".

-Geliang

> 
> Following sashiko's comments, it also moves the pr_debug() before
> bpf_module_put() in mptcp_pm_ops_release.
> 
> Signed-off-by: Gang Yan <yangang@kylinos.cn>
> ---
>  net/mptcp/pm.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
> index 9dc7b41fb562..033f783d4990 100644
> --- a/net/mptcp/pm.c
> +++ b/net/mptcp/pm.c
> @@ -1137,12 +1137,13 @@ void mptcp_pm_worker(struct mptcp_sock *msk)
>  	spin_unlock_bh(&msk->pm.lock);
>  }
>  
> -static void mptcp_pm_ops_init(struct mptcp_sock *msk,
> -			      struct mptcp_pm_ops *pm_ops)
> +static void mptcp_pm_ops_init(struct mptcp_sock *msk, const char
> *pm_name)
>  {
> +	struct mptcp_pm_ops *pm_ops;
> +
> +	pm_ops = mptcp_pm_find(pm_name);
>  	if (!pm_ops || !bpf_try_module_get(pm_ops, pm_ops->owner)) {
> -		pr_warn_once("pm %s fails, fallback to default pm",
> -			     pm_ops->name);
> +		pr_warn_once("pm %s fails, fallback to default pm",
> pm_name);
>  		pm_ops = &mptcp_pm_kernel;
>  	}
>  
> @@ -1161,9 +1162,9 @@ static void mptcp_pm_ops_release(struct
> mptcp_sock *msk)
>  	if (pm_ops->release)
>  		pm_ops->release(msk);
>  
> -	bpf_module_put(pm_ops, pm_ops->owner);
> -
>  	pr_debug("pm %s released\n", pm_ops->name);
> +
> +	bpf_module_put(pm_ops, pm_ops->owner);
>  }
>  
>  void mptcp_pm_destroy(struct mptcp_sock *msk)
> @@ -1185,7 +1186,7 @@ void mptcp_pm_data_reset(struct mptcp_sock
> *msk)
>  	WRITE_ONCE(pm->pm_type, pm_type);
>  
>  	rcu_read_lock();
> -	mptcp_pm_ops_init(msk, mptcp_pm_find(pm_name));
> +	mptcp_pm_ops_init(msk, pm_name);
>  	rcu_read_unlock();
>  }
>  
Re: [PATCH mptcp-next v3] Squash-to "mptcp: pm: init and release mptcp_pm_ops"
Posted by MPTCP CI 2 days, 21 hours ago
Hi Gang,

Thank you for your modifications, that's great!

Our CI did some validations and here is its report:

- KVM Validation: normal (except selftest_mptcp_join): Success! ✅
- KVM Validation: normal (only selftest_mptcp_join): Success! ✅
- KVM Validation: debug (except selftest_mptcp_join): Success! ✅
- KVM Validation: debug (only selftest_mptcp_join): Success! ✅
- KVM Validation: btf-normal (only bpftest_all): Success! ✅
- KVM Validation: btf-debug (only bpftest_all): Success! ✅
- Task: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/28571232891

Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/f4ca9be44841
Patchwork: https://patchwork.kernel.org/project/mptcp/list/?series=1120251


If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:

    $ cd [kernel source code]
    $ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
        --pull always mptcp/mptcp-upstream-virtme-docker:latest \
        auto-normal

For more details:

    https://github.com/multipath-tcp/mptcp-upstream-virtme-docker


Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)

Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)