--- x/kernel/bpf/reuseport_array.c +++ r/kernel/bpf/reuseport_array.c @@ -24,6 +24,7 @@ void bpf_sk_reuseport_detach(struct sock struct sock __rcu **socks; write_lock_bh(&sk->sk_callback_lock); + rcu_read_lock(); socks = __rcu_dereference_sk_user_data_with_flags(sk, SK_USER_DATA_BPF); if (socks) { WRITE_ONCE(sk->sk_user_data, NULL); @@ -35,6 +36,7 @@ void bpf_sk_reuseport_detach(struct sock */ RCU_INIT_POINTER(*socks, NULL); } + rcu_read_unlock(); write_unlock_bh(&sk->sk_callback_lock); }