rhashtable: RCU annotations for next pointers
authorThomas Graf <tgraf@suug.ch>
Wed, 13 Aug 2014 14:38:29 +0000 (16:38 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 14 Aug 2014 22:13:39 +0000 (15:13 -0700)
Properly annotate next pointers as access is RCU protected in
the lookup path.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/rhashtable.h
lib/rhashtable.c

index 9cda293..8c6048e 100644 (file)
@@ -21,7 +21,7 @@
 #include <linux/rculist.h>
 
 struct rhash_head {
-       struct rhash_head               *next;
+       struct rhash_head __rcu         *next;
 };
 
 #define INIT_HASH_HEAD(ptr) ((ptr)->next = NULL)
@@ -97,7 +97,7 @@ u32 rhashtable_obj_hashfn(const struct rhashtable *ht, void *ptr);
 void rhashtable_insert(struct rhashtable *ht, struct rhash_head *node, gfp_t);
 bool rhashtable_remove(struct rhashtable *ht, struct rhash_head *node, gfp_t);
 void rhashtable_remove_pprev(struct rhashtable *ht, struct rhash_head *obj,
-                            struct rhash_head **pprev, gfp_t flags);
+                            struct rhash_head __rcu **pprev, gfp_t flags);
 
 bool rht_grow_above_75(const struct rhashtable *ht, size_t new_size);
 bool rht_shrink_below_30(const struct rhashtable *ht, size_t new_size);
index e6940cf..338dd7a 100644 (file)
@@ -386,7 +386,7 @@ EXPORT_SYMBOL_GPL(rhashtable_insert);
  * deletion when combined with walking or lookup.
  */
 void rhashtable_remove_pprev(struct rhashtable *ht, struct rhash_head *obj,
-                            struct rhash_head **pprev, gfp_t flags)
+                            struct rhash_head __rcu **pprev, gfp_t flags)
 {
        struct bucket_table *tbl = rht_dereference(ht->tbl, ht);