mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-06 03:45:24 -04:00
net: treat possible_net_t net pointer as an RCU one and add read_pnet_rcu()
[ Upstream commit 2034d90ae41ae93e30d492ebcf1f06f97a9cfba6 ]
Make the net pointer stored in possible_net_t structure annotated as
an RCU pointer. Change the access helpers to treat it as such.
Introduce read_pnet_rcu() helper to allow caller to dereference
the net pointer under RCU read lock.
Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stable-dep-of: dd205fcc33d9 ("ipv4: use RCU protection in rt_is_expired()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
ef539316c5
commit
fde36de3b4
1 changed files with 12 additions and 3 deletions
|
|
@ -310,21 +310,30 @@ static inline int check_net(const struct net *net)
|
|||
|
||||
typedef struct {
|
||||
#ifdef CONFIG_NET_NS
|
||||
struct net *net;
|
||||
struct net __rcu *net;
|
||||
#endif
|
||||
} possible_net_t;
|
||||
|
||||
static inline void write_pnet(possible_net_t *pnet, struct net *net)
|
||||
{
|
||||
#ifdef CONFIG_NET_NS
|
||||
pnet->net = net;
|
||||
rcu_assign_pointer(pnet->net, net);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline struct net *read_pnet(const possible_net_t *pnet)
|
||||
{
|
||||
#ifdef CONFIG_NET_NS
|
||||
return pnet->net;
|
||||
return rcu_dereference_protected(pnet->net, true);
|
||||
#else
|
||||
return &init_net;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline struct net *read_pnet_rcu(possible_net_t *pnet)
|
||||
{
|
||||
#ifdef CONFIG_NET_NS
|
||||
return rcu_dereference(pnet->net);
|
||||
#else
|
||||
return &init_net;
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue