diff --git a/include/linux/skmsg.h b/include/linux/skmsg.h index a83885c5bb86cbb2b86d80cf512d2c15ec1c1922..9bd49d9539e945d2b118c0b070c90c21c89d6949 100644 --- a/include/linux/skmsg.h +++ b/include/linux/skmsg.h @@ -476,10 +476,12 @@ static inline void sk_psock_put(struct sock *sk, struct sk_psock *psock) static inline void sk_psock_data_ready(struct sock *sk, struct sk_psock *psock) { + read_lock_bh(&sk->sk_callback_lock); if (psock->parser.enabled) psock->parser.saved_data_ready(sk); else sk->sk_data_ready(sk); + read_unlock_bh(&sk->sk_callback_lock); } static inline void psock_set_prog(struct bpf_prog **pprog,