Suppress "suspicious rcu_dereference_protected() usage!" on duplicate
insertion test.

Fixes: 499ac3b60f65 ('test_rhashtable: add test case for rhl_table with 
duplicate objects')
Signed-off-by: Paul Blakey <pa...@mellanox.com>
---
 lib/test_rhashtable.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/lib/test_rhashtable.c b/lib/test_rhashtable.c
index f4000c1..727d3ec 100644
--- a/lib/test_rhashtable.c
+++ b/lib/test_rhashtable.c
@@ -498,14 +498,16 @@ static unsigned int __init print_ht(struct rhltable *rhlt)
        char buff[512] = "";
        unsigned int i, cnt = 0;
 
+       rcu_read_lock();
+
        ht = &rhlt->ht;
-       tbl = rht_dereference(ht->tbl, ht);
+       tbl = rht_dereference_rcu(ht->tbl, ht);
        for (i = 0; i < tbl->size; i++) {
                struct rhash_head *pos, *next;
                struct test_obj_rhl *p;
 
-               pos = rht_dereference(tbl->buckets[i], ht);
-               next = !rht_is_a_nulls(pos) ? rht_dereference(pos->next, ht) : 
NULL;
+               pos = rht_dereference_rcu(tbl->buckets[i], ht);
+               next = !rht_is_a_nulls(pos) ? rht_dereference_rcu(pos->next, 
ht) : NULL;
 
                if (!rht_is_a_nulls(pos)) {
                        sprintf(buff, "%s\nbucket[%d] -> ", buff, i);
@@ -516,7 +518,7 @@ static unsigned int __init print_ht(struct rhltable *rhlt)
                        sprintf(buff, "%s[[", buff);
                        do {
                                pos = &list->rhead;
-                               list = rht_dereference(list->next, ht);
+                               list = rht_dereference_rcu(list->next, ht);
                                p = rht_obj(ht, pos);
 
                                sprintf(buff, "%s val %d (tid=%d)%s", buff, 
p->value.id, p->value.tid,
@@ -526,13 +528,15 @@ static unsigned int __init print_ht(struct rhltable *rhlt)
 
                        pos = next,
                        next = !rht_is_a_nulls(pos) ?
-                               rht_dereference(pos->next, ht) : NULL;
+                               rht_dereference_rcu(pos->next, ht) : NULL;
 
                        sprintf(buff, "%s]]%s", buff, !rht_is_a_nulls(pos) ? " 
-> " : "");
                }
        }
        printk(KERN_ERR "\n---- ht: ----%s\n-------------\n", buff);
 
+       rcu_read_unlock();
+
        return cnt;
 }
 
-- 
1.8.4.3

Reply via email to