From 27f0a890d23c41443284bb4180616e826d6ade0b Mon Sep 17 00:00:00 2001 From: Kuniyuki Iwashima Date: Thu, 10 Nov 2022 20:24:11 +0800 Subject: [PATCH] ip: Fix a data-race around sysctl_fwmark_reflect. stable inclusion from stable-v5.10.134 commit 0ee76fe01ff3c0b4efaa500aecc90d7c8d3a8860 category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I5ZVR7 Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=0ee76fe01ff3c0b4efaa500aecc90d7c8d3a8860 -------------------------------- [ Upstream commit 85d0b4dbd74b95cc492b1f4e34497d3f894f5d9a ] While reading sysctl_fwmark_reflect, it can be changed concurrently. Thus, we need to add READ_ONCE() to its reader. Fixes: e110861f8609 ("net: add a sysctl to reflect the fwmark on replies") Signed-off-by: Kuniyuki Iwashima Signed-off-by: David S. Miller Signed-off-by: Sasha Levin Signed-off-by: Zheng Zengkai Reviewed-by: Wei Li --- include/net/ip.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/net/ip.h b/include/net/ip.h index b97886996d79..ef6e8e5b4fce 100644 --- a/include/net/ip.h +++ b/include/net/ip.h @@ -382,7 +382,7 @@ void ipfrag_init(void); void ip_static_sysctl_init(void); #define IP4_REPLY_MARK(net, mark) \ - ((net)->ipv4.sysctl_fwmark_reflect ? (mark) : 0) + (READ_ONCE((net)->ipv4.sysctl_fwmark_reflect) ? (mark) : 0) static inline bool ip_is_fragment(const struct iphdr *iph) { -- GitLab