mptcp: pm: only in-kernel cannot have entries with ID 0
authorMatthieu Baerts (NGI0) <matttbe@kernel.org>
Mon, 19 Aug 2024 19:45:29 +0000 (21:45 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 21 Aug 2024 00:40:13 +0000 (17:40 -0700)
The ID 0 is specific per MPTCP connections. The per netns entries cannot
have this special ID 0 then.

But that's different for the userspace PM where the entries are per
connection, they can then use this special ID 0.

Fixes: f40be0db0b76 ("mptcp: unify pm get_flags_and_ifindex_by_id")
Cc: stable@vger.kernel.org
Acked-by: Geliang Tang <geliang@kernel.org>
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-11-38035d40de5b@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/pm.c
net/mptcp/pm_netlink.c

index 925123e..3e6e0f5 100644 (file)
@@ -434,9 +434,6 @@ int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id
        *flags = 0;
        *ifindex = 0;
 
-       if (!id)
-               return 0;
-
        if (mptcp_pm_is_userspace(msk))
                return mptcp_userspace_pm_get_flags_and_ifindex_by_id(msk, id, flags, ifindex);
        return mptcp_pm_nl_get_flags_and_ifindex_by_id(msk, id, flags, ifindex);
index 28a9a37..d0a80f5 100644 (file)
@@ -1395,6 +1395,10 @@ int mptcp_pm_nl_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int
        struct sock *sk = (struct sock *)msk;
        struct net *net = sock_net(sk);
 
+       /* No entries with ID 0 */
+       if (id == 0)
+               return 0;
+
        rcu_read_lock();
        entry = __lookup_addr_by_id(pm_nl_get_pernet(net), id);
        if (entry) {