On 06/11, Martin KaFai Lau wrote: > The cloned sk should not carry its parent-listener's sk_bpf_storage. > This patch fixes it by setting it back to NULL. Have you thought about some kind of inheritance for listener sockets' storage? Suppose I have a situation where I write something to listener's sk storage (directly or via recently added sockopts hooks) and I want to inherit that state for a freshly established connection. I was looking into adding possibility to call bpf_get_listener_sock form BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB callback to manually copy some data form the listener socket, but I don't think at this point there is any association between newly established socket and the listener. Thoughts/ideas? (Btw, sorry for digging up this old mail, but it feels relevant). > Fixes: 6ac99e8f23d4 ("bpf: Introduce bpf sk local storage") > Signed-off-by: Martin KaFai Lau <kafai@xxxxxx> > --- > net/core/sock.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/net/core/sock.c b/net/core/sock.c > index 2b3701958486..d90fd04622e5 100644 > --- a/net/core/sock.c > +++ b/net/core/sock.c > @@ -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; > -- > 2.17.1 >