lkml.org 
[lkml]   [2010]   [Apr]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: INFO: suspicious rcu_dereference_check() usage - include/linux/cgroup.h:492 invoked rcu_dereference_check() without protection!
On Mon, Apr 19, 2010 at 09:25:29PM -0400, Eric Paris wrote:
> On Mon, 2010-04-19 at 16:01 -0700, Paul E. McKenney wrote:
>
> > Yep, different code path to the same location. Does the following
> > patch help?
> >
> > Thanx, Paul
> >
> > ------------------------------------------------------------------------
> >
> > commit 2836f18139267ea918ed2cf39023fb0eb38c4361
> > Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > Date: Mon Apr 19 15:59:50 2010 -0700
> >
> > rcu: fix RCU lockdep splat on freezer_fork path
> >
> > Add an RCU read-side critical section to suppress this false positive.
> >
> > Located-by: Eric Paris <eparis@parisplace.org>
> > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
>
> That one is also fixed so feel free to add a tested or something from
> me. But we've got another, weeeee! If there some way I could get all
> of these at once?

Sure! I -think- that if you remove the first "if" statement in
lockdep_rcu_dereference() in kernel/lockdep.c, you will get lots of them
all at once. Maybe more than your console log is able to hold...

So another approach would be to print only the first 100 or some such.

It -looks- to me that you could make __debug_locks_off() atomically
decrement a counter rather than just setting it to zero, see
include/linux/debug_locks.h. I suspect that atomic_dec_not_zero()
would work very well for you here.

Peter probably knows a better approach, but those would work.

Thanx, Paul

> [ 0.045164] ===================================================
> [ 0.047002] [ INFO: suspicious rcu_dereference_check() usage. ]
> [ 0.048002] ---------------------------------------------------
> [ 0.049012] include/linux/cgroup.h:533 invoked rcu_dereference_check() without protection!
> [ 0.051087]
> [ 0.051088] other info that might help us debug this:
> [ 0.051088]
> [ 0.057011]
> [ 0.057011] rcu_scheduler_active = 1, debug_locks = 0
> [ 0.059046] no locks held by watchdog/0/5.
> [ 0.060002]
> [ 0.060003] stack backtrace:
> [ 0.061003] Pid: 5, comm: watchdog/0 Not tainted 2.6.34-rc4-next-20100415+ #104
> [ 0.063011] Call Trace:
> [ 0.063654] [<ffffffff8108652f>] lockdep_rcu_dereference+0xaf/0xc0
> [ 0.065009] [<ffffffff810b53f0>] ? watchdog+0x0/0xa0
> [ 0.066006] [<ffffffff8104d01b>] __sched_setscheduler+0x3ab/0x430
> [ 0.067005] [<ffffffff810b53f0>] ? watchdog+0x0/0xa0
> [ 0.068004] [<ffffffff8104d0be>] sched_setscheduler+0xe/0x10
> [ 0.070009] [<ffffffff810b541a>] watchdog+0x2a/0xa0
> [ 0.071004] [<ffffffff810b53f0>] ? watchdog+0x0/0xa0
> [ 0.072007] [<ffffffff810714ec>] kthread+0xac/0xc0
> [ 0.073005] [<ffffffff81087ff0>] ? trace_hardirqs_on_caller+0xc0/0x240
> [ 0.074006] [<ffffffff8100bc24>] kernel_thread_helper+0x4/0x10
> [ 0.075005] [<ffffffff814fee54>] ? restore_args+0x0/0x30
> [ 0.076004] [<ffffffff81071440>] ? kthread+0x0/0xc0
> [ 0.077004] [<ffffffff8100bc20>] ? kernel_thread_helper+0x0/0x10
>
>
>


\
 
 \ /
  Last update: 2010-04-20 05:07    [W:0.567 / U:0.584 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site