mptcp: fix tracking issue in mptcp_subflow_create_socket()
authorEric Dumazet <edumazet@google.com>
Tue, 25 Oct 2022 18:05:46 +0000 (18:05 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 27 Oct 2022 02:07:05 +0000 (19:07 -0700)
My recent patch missed that mptcp_subflow_create_socket()
was creating a 'kernel' socket, then converted it to 'user' socket.

Fixes: 0cafd77dcd03 ("net: add a refcount tracker for kernel sockets")
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Matthieu Baerts <matthieu.baerts@tessares.net>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Link: https://lore.kernel.org/r/20221025180546.652251-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/subflow.c

index 07dd23d0fe04ac37f4cc66c0c21d4d41f50fb3f4..120f792fda9764271f020771b36d27c6e44d8618 100644 (file)
@@ -1595,7 +1595,9 @@ int mptcp_subflow_create_socket(struct sock *sk, struct socket **new_sock)
 
        /* kernel sockets do not by default acquire net ref, but TCP timer
         * needs it.
+        * Update ns_tracker to current stack trace and refcounted tracker.
         */
+       __netns_tracker_free(net, &sf->sk->ns_tracker, false);
        sf->sk->sk_net_refcnt = 1;
        get_net_track(net, &sf->sk->ns_tracker, GFP_KERNEL);
        sock_inuse_add(net, 1);