From: John Fastabend Date: Mon, 28 Aug 2017 14:10:45 +0000 (-0700) Subject: bpf: sockmap add missing rcu_read_(un)lock in smap_data_ready X-Git-Tag: v4.14-rc1~130^2~123^2~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d26e597d87635d90128fafb3f6bb0a14d972d952;p=platform%2Fkernel%2Flinux-exynos.git bpf: sockmap add missing rcu_read_(un)lock in smap_data_ready References to psock must be done inside RCU critical section. Fixes: 174a79ff9515 ("bpf: sockmap with sk redirect support") Signed-off-by: John Fastabend Signed-off-by: David S. Miller --- diff --git a/kernel/bpf/sockmap.c b/kernel/bpf/sockmap.c index a6882e54930b..266011c822ec 100644 --- a/kernel/bpf/sockmap.c +++ b/kernel/bpf/sockmap.c @@ -227,11 +227,14 @@ static void smap_data_ready(struct sock *sk) { struct smap_psock *psock; - write_lock_bh(&sk->sk_callback_lock); + rcu_read_lock(); psock = smap_psock_sk(sk); - if (likely(psock)) + if (likely(psock)) { + write_lock_bh(&sk->sk_callback_lock); strp_data_ready(&psock->strp); - write_unlock_bh(&sk->sk_callback_lock); + write_unlock_bh(&sk->sk_callback_lock); + } + rcu_read_unlock(); } static void smap_tx_work(struct work_struct *w)