This pointer is RCU protected, so proper primitives should be used.

Signed-off-by: Zhang Yu <zhangy...@baidu.com>
Signed-off-by: Li RongQing <lirongq...@baidu.com>
---
 net/core/sock.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/core/sock.c b/net/core/sock.c
index f4b8b78535f8..f5d82f3fa474 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1865,7 +1865,7 @@ struct sock *sk_clone_lock(const struct sock *sk, const 
gfp_t priority)
                 */
                sk_refcnt_debug_inc(newsk);
                sk_set_socket(newsk, NULL);
-               newsk->sk_wq = NULL;
+               RCU_INIT_POINTER(newsk->sk_wq, NULL);
 
                if (newsk->sk_prot->sockets_allocated)
                        sk_sockets_allocated_inc(newsk);
@@ -2828,11 +2828,11 @@ void sock_init_data(struct socket *sock, struct sock 
*sk)
 
        if (sock) {
                sk->sk_type     =       sock->type;
-               sk->sk_wq       =       sock->wq;
+               RCU_INIT_POINTER(sk->sk_wq, sock->wq);
                sock->sk        =       sk;
                sk->sk_uid      =       SOCK_INODE(sock)->i_uid;
        } else {
-               sk->sk_wq       =       NULL;
+               RCU_INIT_POINTER(sk->sk_wq, NULL);
                sk->sk_uid      =       make_kuid(sock_net(sk)->user_ns, 0);
        }
 
-- 
2.16.2

Reply via email to