• P
    rcu: Need to update rnp->gpnum if preemptable RCU is to be reliable · de078d87
    Paul E. McKenney 提交于
    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: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    Acked-by: NSteven 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: NIngo Molnar <mingo@elte.hu>
    de078d87
rcutree.c 46.7 KB