net: add dev_net_rcu() helper
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 <edumazet@google.com> Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com> Link: https://patch.msgid.link/20250205155120.1676781-2-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
3cf0a98fea
commit
482ad2a4ac
2 changed files with 7 additions and 1 deletions
|
@ -2663,6 +2663,12 @@ struct net *dev_net(const struct net_device *dev)
|
||||||
return read_pnet(&dev->nd_net);
|
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
|
static inline
|
||||||
void dev_net_set(struct net_device *dev, struct net *net)
|
void dev_net_set(struct net_device *dev, struct net *net)
|
||||||
{
|
{
|
||||||
|
|
|
@ -398,7 +398,7 @@ static inline struct net *read_pnet(const possible_net_t *pnet)
|
||||||
#endif
|
#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
|
#ifdef CONFIG_NET_NS
|
||||||
return rcu_dereference(pnet->net);
|
return rcu_dereference(pnet->net);
|
||||||
|
|
Loading…
Add table
Reference in a new issue