Commit 94bfa3b6692c7a3f6f119596724204ec975d3ef0
1 parent
f3b577dec1
Exists in
master
and in
4 other branches
idr: fix RCU lockdep splat in idr_get_next()
Convert to rcu_dereference_raw() given that many callers may have many different locking models. Located-by: Miles Lane <miles.lane@gmail.com> Tested-by: Miles Lane <miles.lane@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Showing 1 changed file with 2 additions and 2 deletions Side-by-side Diff
lib/idr.c
... | ... | @@ -602,7 +602,7 @@ |
602 | 602 | /* find first ent */ |
603 | 603 | n = idp->layers * IDR_BITS; |
604 | 604 | max = 1 << n; |
605 | - p = rcu_dereference(idp->top); | |
605 | + p = rcu_dereference_raw(idp->top); | |
606 | 606 | if (!p) |
607 | 607 | return NULL; |
608 | 608 | |
... | ... | @@ -610,7 +610,7 @@ |
610 | 610 | while (n > 0 && p) { |
611 | 611 | n -= IDR_BITS; |
612 | 612 | *paa++ = p; |
613 | - p = rcu_dereference(p->ary[(id >> n) & IDR_MASK]); | |
613 | + p = rcu_dereference_raw(p->ary[(id >> n) & IDR_MASK]); | |
614 | 614 | } |
615 | 615 | |
616 | 616 | if (p) { |