diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2009-09-08 15:54:36 -0700 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-09-18 00:04:54 +0200 |
commit | de078d875cc7fc709f7818f26d38389c04369826 (patch) | |
tree | 0e7ed4d9d11ae707cc3b4e1e9d511a6d78e9e29d /kernel/smp.c | |
parent | de55a8958f6e3ef5ce5f0971b80bd44bfcac7cf1 (diff) |
rcu: Need to update rnp->gpnum if preemptable RCU is to be reliable
Without this patch, tasks preempted in RCU read-side critical
sections can fail to block the grace period, given that
rnp->gpnum is used to determine which rnp->blocked_tasks[]
element the preempted task is enqueued on.
Before the patch, rnp->gpnum is always zero, so preempted tasks
are always enqueued on rnp->blocked_tasks[0], which is correct
only when the current CPU has not checked into the current
grace period and the grace-period number is even, or,
similarly, if the current CPU -has- checked into the current
grace period and the grace-period number is odd.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: laijs@cn.fujitsu.com
Cc: dipankar@in.ibm.com
Cc: akpm@linux-foundation.org
Cc: mathieu.desnoyers@polymtl.ca
Cc: josht@linux.vnet.ibm.com
Cc: dvhltc@us.ibm.com
Cc: niv@us.ibm.com
Cc: peterz@infradead.org
LKML-Reference: <12524504771622-git-send-email->
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/smp.c')
0 files changed, 0 insertions, 0 deletions