diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-28 13:13:16 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-28 13:13:16 -0500 |
commit | 642c4c75a765d7a3244ab39c8e6fb09be21eca5b (patch) | |
tree | ce0be9b476f362835d3a3d6e4fd32801cd15c9fe /lib/idr.c | |
parent | f91b22c35f6b0ae06ec5b67922eca1999c3b6e0a (diff) | |
parent | 71da81324c83ef65bb196c7f874ac1c6996d8287 (diff) |
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (44 commits)
rcu: Fix accelerated GPs for last non-dynticked CPU
rcu: Make non-RCU_PROVE_LOCKING rcu_read_lock_sched_held() understand boot
rcu: Fix accelerated grace periods for last non-dynticked CPU
rcu: Export rcu_scheduler_active
rcu: Make rcu_read_lock_sched_held() take boot time into account
rcu: Make lockdep_rcu_dereference() message less alarmist
sched, cgroups: Fix module export
rcu: Add RCU_CPU_STALL_VERBOSE to dump detailed per-task information
rcu: Fix rcutorture mod_timer argument to delay one jiffy
rcu: Fix deadlock in TREE_PREEMPT_RCU CPU stall detection
rcu: Convert to raw_spinlocks
rcu: Stop overflowing signed integers
rcu: Use canonical URL for Mathieu's dissertation
rcu: Accelerate grace period if last non-dynticked CPU
rcu: Fix citation of Mathieu's dissertation
rcu: Documentation update for CONFIG_PROVE_RCU
security: Apply lockdep-based checking to rcu_dereference() uses
idr: Apply lockdep-based diagnostics to rcu_dereference() uses
radix-tree: Disable RCU lockdep checking in radix tree
vfs: Abstract rcu_dereference_check for files-fdtable use
...
Diffstat (limited to 'lib/idr.c')
-rw-r--r-- | lib/idr.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -504,7 +504,7 @@ void *idr_find(struct idr *idp, int id) | |||
504 | int n; | 504 | int n; |
505 | struct idr_layer *p; | 505 | struct idr_layer *p; |
506 | 506 | ||
507 | p = rcu_dereference(idp->top); | 507 | p = rcu_dereference_raw(idp->top); |
508 | if (!p) | 508 | if (!p) |
509 | return NULL; | 509 | return NULL; |
510 | n = (p->layer+1) * IDR_BITS; | 510 | n = (p->layer+1) * IDR_BITS; |
@@ -519,7 +519,7 @@ void *idr_find(struct idr *idp, int id) | |||
519 | while (n > 0 && p) { | 519 | while (n > 0 && p) { |
520 | n -= IDR_BITS; | 520 | n -= IDR_BITS; |
521 | BUG_ON(n != p->layer*IDR_BITS); | 521 | BUG_ON(n != p->layer*IDR_BITS); |
522 | p = rcu_dereference(p->ary[(id >> n) & IDR_MASK]); | 522 | p = rcu_dereference_raw(p->ary[(id >> n) & IDR_MASK]); |
523 | } | 523 | } |
524 | return((void *)p); | 524 | return((void *)p); |
525 | } | 525 | } |
@@ -552,7 +552,7 @@ int idr_for_each(struct idr *idp, | |||
552 | struct idr_layer **paa = &pa[0]; | 552 | struct idr_layer **paa = &pa[0]; |
553 | 553 | ||
554 | n = idp->layers * IDR_BITS; | 554 | n = idp->layers * IDR_BITS; |
555 | p = rcu_dereference(idp->top); | 555 | p = rcu_dereference_raw(idp->top); |
556 | max = 1 << n; | 556 | max = 1 << n; |
557 | 557 | ||
558 | id = 0; | 558 | id = 0; |
@@ -560,7 +560,7 @@ int idr_for_each(struct idr *idp, | |||
560 | while (n > 0 && p) { | 560 | while (n > 0 && p) { |
561 | n -= IDR_BITS; | 561 | n -= IDR_BITS; |
562 | *paa++ = p; | 562 | *paa++ = p; |
563 | p = rcu_dereference(p->ary[(id >> n) & IDR_MASK]); | 563 | p = rcu_dereference_raw(p->ary[(id >> n) & IDR_MASK]); |
564 | } | 564 | } |
565 | 565 | ||
566 | if (p) { | 566 | if (p) { |