lkml.org 
[lkml]   [2010]   [Jun]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH tip/core/urgent 3/3] idr: fix RCU lockdep splat in idr_get_next()
    Date
    Convert to rcu_dereference_raw() given that many callers may have many
    different locking models.

    Located-by: Miles Lane <miles.lane@gmail.com>
    Tested-by: Miles Lane <miles.lane@gmail.com>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    ---
    lib/idr.c | 4 ++--
    1 files changed, 2 insertions(+), 2 deletions(-)

    diff --git a/lib/idr.c b/lib/idr.c
    index c1a2069..7f1a4f0 100644
    --- a/lib/idr.c
    +++ b/lib/idr.c
    @@ -602,7 +602,7 @@ void *idr_get_next(struct idr *idp, int *nextidp)
    /* find first ent */
    n = idp->layers * IDR_BITS;
    max = 1 << n;
    - p = rcu_dereference(idp->top);
    + p = rcu_dereference_raw(idp->top);
    if (!p)
    return NULL;

    @@ -610,7 +610,7 @@ void *idr_get_next(struct idr *idp, int *nextidp)
    while (n > 0 && p) {
    n -= IDR_BITS;
    *paa++ = p;
    - p = rcu_dereference(p->ary[(id >> n) & IDR_MASK]);
    + p = rcu_dereference_raw(p->ary[(id >> n) & IDR_MASK]);
    }

    if (p) {
    --
    1.7.0.6


    \
     
     \ /
      Last update: 2010-06-16 00:33    [W:0.047 / U:0.120 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site