lkml.org 
[lkml]   [2014]   [Jul]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 06/16] rcu: Clear gp_flags only when actually starting new gp
    Date
    We are clearing the gp_flags before we check if a grace period is in progress.
    If a grace period is in progress, we return after incorrectly clearing the
    gp_flags. The code comments say that this is highly unlikely, but just to be
    safe this commit moves the clearing of gp_flags to after the check for grace
    period in progress.

    Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
    ---
    kernel/rcu/tree.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
    index 044946e..b14cecd 100644
    --- a/kernel/rcu/tree.c
    +++ b/kernel/rcu/tree.c
    @@ -1605,7 +1605,6 @@ static int rcu_gp_init(struct rcu_state *rsp)
    raw_spin_unlock_irq(&rnp->lock);
    return 0;
    }
    - ACCESS_ONCE(rsp->gp_flags) = 0; /* Clear all flags: New grace period. */

    if (WARN_ON_ONCE(rcu_gp_in_progress(rsp))) {
    /*
    @@ -1616,6 +1615,8 @@ static int rcu_gp_init(struct rcu_state *rsp)
    return 0;
    }

    + ACCESS_ONCE(rsp->gp_flags) = 0; /* Clear all flags: New grace period. */
    +
    /* Advance to a new grace period and initialize state. */
    record_gp_stall_check_time(rsp);
    /* Record GP times before starting GP, hence smp_store_release(). */
    --
    2.0.0.rc2


    \
     
     \ /
      Last update: 2014-07-23 09:41    [W:2.105 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site