From: Eric Dumazet Date: Tue, 12 Sep 2023 09:17:25 +0000 (+0000) Subject: udp: add missing WRITE_ONCE() around up->encap_rcv X-Git-Tag: v6.1.63~357 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a08ff0544b92b543334b22d718d0ae7e4970761f;p=sdk%2Femulator%2Femulator-kernel.git udp: add missing WRITE_ONCE() around up->encap_rcv [ Upstream commit 6d5a12eb91224d707f8691dccb40a5719fe5466d ] UDP_ENCAP_ESPINUDP_NON_IKE setsockopt() writes over up->encap_rcv while other cpus read it. Fixes: 067b207b281d ("[UDP]: Cleanup UDP encapsulation code") Signed-off-by: Eric Dumazet Reviewed-by: Willem de Bruijn Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin --- diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index b2aa7777521f..65abc92a81bd 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -2714,10 +2714,12 @@ int udp_lib_setsockopt(struct sock *sk, int level, int optname, case UDP_ENCAP_ESPINUDP_NON_IKE: #if IS_ENABLED(CONFIG_IPV6) if (sk->sk_family == AF_INET6) - up->encap_rcv = ipv6_stub->xfrm6_udp_encap_rcv; + WRITE_ONCE(up->encap_rcv, + ipv6_stub->xfrm6_udp_encap_rcv); else #endif - up->encap_rcv = xfrm4_udp_encap_rcv; + WRITE_ONCE(up->encap_rcv, + xfrm4_udp_encap_rcv); #endif fallthrough; case UDP_ENCAP_L2TPINUDP: