bpf: net: Set sk_bpf_storage back to NULL for cloned sk
authorMartin KaFai Lau <kafai@fb.com>
Tue, 11 Jun 2019 21:45:57 +0000 (14:45 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Wed, 12 Jun 2019 14:38:20 +0000 (16:38 +0200)
The cloned sk should not carry its parent-listener's sk_bpf_storage.
This patch fixes it by setting it back to NULL.

Fixes: 6ac99e8f23d4 ("bpf: Introduce bpf sk local storage")
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
net/core/sock.c

index 2b3701958486219a26385c8fca1498c4e294dc1d..d90fd04622e5867604ced3268898e8401e71ccdc 100644 (file)
@@ -1850,6 +1850,9 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority)
                        goto out;
                }
                RCU_INIT_POINTER(newsk->sk_reuseport_cb, NULL);
+#ifdef CONFIG_BPF_SYSCALL
+               RCU_INIT_POINTER(newsk->sk_bpf_storage, NULL);
+#endif
 
                newsk->sk_err      = 0;
                newsk->sk_err_soft = 0;