Skip to content

Commit 32da0f0

Browse files
jhsmtdavem330
authored andcommitted
net: rtnl: introduce rcu_replace_pointer_rtnl
Introduce the rcu_replace_pointer_rtnl helper to lockdep check rtnl lock rcu replacements, alongside the already existing helpers. This is a quality of life helper so instead of using: rcu_replace_pointer(rp, p, lockdep_rtnl_is_held()) .. or the open coded.. rtnl_dereference() / rcu_assign_pointer() .. or the lazy check version .. rcu_replace_pointer(rp, p, 1) Use: rcu_replace_pointer_rtnl(rp, p) Signed-off-by: Jamal Hadi Salim <[email protected]> Signed-off-by: Victor Nogueira <[email protected]> Signed-off-by: Pedro Tammela <[email protected]> Reviewed-by: Ido Schimmel <[email protected]> Reviewed-by: Nikolay Aleksandrov <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 54f4c25 commit 32da0f0

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

include/linux/rtnetlink.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,18 @@ static inline bool lockdep_rtnl_is_held(void)
7979
#define rtnl_dereference(p) \
8080
rcu_dereference_protected(p, lockdep_rtnl_is_held())
8181

82+
/**
83+
* rcu_replace_pointer_rtnl - replace an RCU pointer under rtnl_lock, returning
84+
* its old value
85+
* @rp: RCU pointer, whose value is returned
86+
* @p: regular pointer
87+
*
88+
* Perform a replacement under rtnl_lock, where @rp is an RCU-annotated
89+
* pointer. The old value of @rp is returned, and @rp is set to @p
90+
*/
91+
#define rcu_replace_pointer_rtnl(rp, p) \
92+
rcu_replace_pointer(rp, p, lockdep_rtnl_is_held())
93+
8294
static inline struct netdev_queue *dev_ingress_queue(struct net_device *dev)
8395
{
8496
return rtnl_dereference(dev->ingress_queue);

0 commit comments

Comments
 (0)