]> www.infradead.org Git - nvme.git/commitdiff
net/core: move the lockdep-init of sk_callback_lock to sk_init_common()
authorGou Hao <gouhao@uniontech.com>
Sun, 26 May 2024 14:57:18 +0000 (22:57 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 28 May 2024 11:29:36 +0000 (13:29 +0200)
In commit cdfbabfb2f0c ("net: Work around lockdep limitation in
sockets that use sockets"), it introduces 'af_kern_callback_keys'
to lockdep-init of sk_callback_lock according to 'sk_kern_sock',
it modifies sock_init_data() only, and sk_clone_lock() calls
sk_init_common() to initialize sk_callback_lock too, so the
lockdep-init of sk_callback_lock should be moved to sk_init_common().

Signed-off-by: Gou Hao <gouhao@uniontech.com>
Link: https://lore.kernel.org/r/20240526145718.9542-2-gouhao@uniontech.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/core/sock.c

index 67b10954e0cfbc360d7b102a31e44235f4357dc9..521e6373d4f73d7805124b1932fb2fd9c1754acf 100644 (file)
@@ -2262,7 +2262,12 @@ static void sk_init_common(struct sock *sk)
        lockdep_set_class_and_name(&sk->sk_error_queue.lock,
                        af_elock_keys + sk->sk_family,
                        af_family_elock_key_strings[sk->sk_family]);
-       lockdep_set_class_and_name(&sk->sk_callback_lock,
+       if (sk->sk_kern_sock)
+               lockdep_set_class_and_name(&sk->sk_callback_lock,
+                       af_kern_callback_keys + sk->sk_family,
+                       af_family_kern_clock_key_strings[sk->sk_family]);
+       else
+               lockdep_set_class_and_name(&sk->sk_callback_lock,
                        af_callback_keys + sk->sk_family,
                        af_family_clock_key_strings[sk->sk_family]);
 }
@@ -3460,17 +3465,6 @@ void sock_init_data_uid(struct socket *sock, struct sock *sk, kuid_t uid)
        }
        sk->sk_uid      =       uid;
 
-       if (sk->sk_kern_sock)
-               lockdep_set_class_and_name(
-                       &sk->sk_callback_lock,
-                       af_kern_callback_keys + sk->sk_family,
-                       af_family_kern_clock_key_strings[sk->sk_family]);
-       else
-               lockdep_set_class_and_name(
-                       &sk->sk_callback_lock,
-                       af_callback_keys + sk->sk_family,
-                       af_family_clock_key_strings[sk->sk_family]);
-
        sk->sk_state_change     =       sock_def_wakeup;
        sk->sk_data_ready       =       sock_def_readable;
        sk->sk_write_space      =       sock_def_write_space;