diff options
| author | Kuniyuki Iwashima <kuniyu@amazon.com> | 2022-08-23 10:46:56 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-08-31 17:15:21 +0200 |
| commit | 371a3bcf3144584c511f80e87d4c28ac2c75e9a7 (patch) | |
| tree | 90ddc8c712350cb5d2a6ac59a51c497d16369c11 | |
| parent | c3bda708e9c40d0a88f3c86c3d9103db44b38c0b (diff) | |
| download | linux-371a3bcf3144584c511f80e87d4c28ac2c75e9a7.tar.gz linux-371a3bcf3144584c511f80e87d4c28ac2c75e9a7.tar.bz2 linux-371a3bcf3144584c511f80e87d4c28ac2c75e9a7.zip | |
net: Fix data-races around sysctl_fb_tunnels_only_for_init_net.
[ Upstream commit af67508ea6cbf0e4ea27f8120056fa2efce127dd ]
While reading sysctl_fb_tunnels_only_for_init_net, it can be changed
concurrently. Thus, we need to add READ_ONCE() to its readers.
Fixes: 79134e6ce2c9 ("net: do not create fallback tunnels for non-default namespaces")
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
| -rw-r--r-- | include/linux/netdevice.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index ed2d53140005..c05701f89d6d 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -633,9 +633,14 @@ extern int sysctl_devconf_inherit_init_net; */ static inline bool net_has_fallback_tunnels(const struct net *net) { - return !IS_ENABLED(CONFIG_SYSCTL) || - !sysctl_fb_tunnels_only_for_init_net || - (net == &init_net && sysctl_fb_tunnels_only_for_init_net == 1); +#if IS_ENABLED(CONFIG_SYSCTL) + int fb_tunnels_only_for_init_net = READ_ONCE(sysctl_fb_tunnels_only_for_init_net); + + return !fb_tunnels_only_for_init_net || + (net_eq(net, &init_net) && fb_tunnels_only_for_init_net == 1); +#else + return true; +#endif } static inline int netdev_queue_numa_node_read(const struct netdev_queue *q) |
