lkml.org 
[lkml]   [2012]   [Aug]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH tip/core/rcu 10/15] rcu: Protect rcu_node accesses during CPU stall warnings
    Date
    From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>

    The print_other_cpu_stall() function accesses a number of rcu_node
    fields without protection from the ->lock. In theory, this is not
    a problem because the fields accessed are all integers, but in
    practice the compiler can get nasty. Therefore, the commit extends
    the existing critical section to cover the entire loop body.

    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    ---
    kernel/rcutree.c | 6 ++++--
    1 files changed, 4 insertions(+), 2 deletions(-)

    diff --git a/kernel/rcutree.c b/kernel/rcutree.c
    index 9f44749..fbe43b0 100644
    --- a/kernel/rcutree.c
    +++ b/kernel/rcutree.c
    @@ -746,14 +746,16 @@ static void print_other_cpu_stall(struct rcu_state *rsp)
    rcu_for_each_leaf_node(rsp, rnp) {
    raw_spin_lock_irqsave(&rnp->lock, flags);
    ndetected += rcu_print_task_stall(rnp);
    - raw_spin_unlock_irqrestore(&rnp->lock, flags);
    - if (rnp->qsmask == 0)
    + if (rnp->qsmask == 0) {
    + raw_spin_unlock_irqrestore(&rnp->lock, flags);
    continue;
    + }
    for (cpu = 0; cpu <= rnp->grphi - rnp->grplo; cpu++)
    if (rnp->qsmask & (1UL << cpu)) {
    print_cpu_stall_info(rsp, rnp->grplo + cpu);
    ndetected++;
    }
    + raw_spin_unlock_irqrestore(&rnp->lock, flags);
    }

    /*
    --
    1.7.8


    \
     
     \ /
      Last update: 2012-08-31 01:01    [W:6.451 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site