From: Eric Dumazet Date: Wed, 5 Feb 2025 15:51:09 +0000 (+0000) Subject: net: add dev_net_rcu() helper X-Git-Tag: v5.10.235~183 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0c009aaa2dbeb8b5b2d877f94076553529ab606e;p=thirdparty%2Fkernel%2Fstable.git net: add dev_net_rcu() helper [ Upstream commit 482ad2a4ace2740ca0ff1cbc8f3c7f862f3ab507 ] dev->nd_net can change, readers should either use rcu_read_lock() or RTNL. We currently use a generic helper, dev_net() with no debugging support. We probably have many hidden bugs. Add dev_net_rcu() helper for callers using rcu_read_lock() protection. Signed-off-by: Eric Dumazet Reviewed-by: Kuniyuki Iwashima Link: https://patch.msgid.link/20250205155120.1676781-2-edumazet@google.com Signed-off-by: Jakub Kicinski Stable-dep-of: dd205fcc33d9 ("ipv4: use RCU protection in rt_is_expired()") Signed-off-by: Sasha Levin --- diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 3380668478e8a..06b37f45b67c9 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -2361,6 +2361,12 @@ struct net *dev_net(const struct net_device *dev) return read_pnet(&dev->nd_net); } +static inline +struct net *dev_net_rcu(const struct net_device *dev) +{ + return read_pnet_rcu(&dev->nd_net); +} + static inline void dev_net_set(struct net_device *dev, struct net *net) { diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 0dfcf2f0ef62a..3cf6a5c17b84c 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h @@ -340,7 +340,7 @@ static inline struct net *read_pnet(const possible_net_t *pnet) #endif } -static inline struct net *read_pnet_rcu(possible_net_t *pnet) +static inline struct net *read_pnet_rcu(const possible_net_t *pnet) { #ifdef CONFIG_NET_NS return rcu_dereference(pnet->net);