rhashtable: silence RCU warning in rhashtable_test.
authorNeilBrown <neilb@suse.com>
Mon, 18 Jun 2018 02:52:50 +0000 (12:52 +1000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 22 Jun 2018 04:43:27 +0000 (13:43 +0900)
print_ht in rhashtable_test calls rht_dereference() with neither
RCU protection or the mutex.  This triggers an RCU warning.
So take the mutex to silence the warning.

Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
lib/test_rhashtable.c

index fb69681..6ca59ff 100644 (file)
@@ -501,6 +501,8 @@ static unsigned int __init print_ht(struct rhltable *rhlt)
        unsigned int i, cnt = 0;
 
        ht = &rhlt->ht;
+       /* Take the mutex to avoid RCU warning */
+       mutex_lock(&ht->mutex);
        tbl = rht_dereference(ht->tbl, ht);
        for (i = 0; i < tbl->size; i++) {
                struct rhash_head *pos, *next;
@@ -534,6 +536,7 @@ static unsigned int __init print_ht(struct rhltable *rhlt)
                }
        }
        printk(KERN_ERR "\n---- ht: ----%s\n-------------\n", buff);
+       mutex_unlock(&ht->mutex);
 
        return cnt;
 }