Messages in this thread |  | | | Date | Sun, 13 Dec 2009 17:53:47 -0800 | | From | "Paul E. McKenney" <> | | Subject | Re: [patch 0/9] Fix various __task_cred related invalid RCU assumptions |
| |
On Sun, Dec 13, 2009 at 07:56:17PM +0100, Peter Zijlstra wrote: > On Wed, 2009-12-09 at 21:34 -0800, Paul E. McKenney wrote: > > > Ah -- I have a related lockdep question. Is there a primitive that says > > whether or not the current task holds at least one lock of any type? > > If so, I would like to make rcu_dereference() do at least a little crude > > checking for this problem. > > Hmm, no, but that's not hard to do, however I actually implemented > something like that for RCU a long while ago and that gives a metric TON > of false positives due to things like the radix tree which are RCU-safe > but are not required to be used with RCU.
Understood -- my current guess is that there needs to be a way to tag a variant of the rcu_dereference() API with the conditions that must be met, for example, either in an rcu-sched read-side critical section or holding a specific type of lock.
This does make it a little harder to retroactively add checking to existing calls to rcu_dereference(), but should allow a good balance between false positives and false negatives going forward.
Seem reasonable, or am I still missing something?
Thanx, Paul
|  |