Messages in this thread | | | Date | Wed, 8 Sep 2021 12:17:56 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH v2] lockdep: Let lock_is_held_type() detect recursive read as read |
| |
On Wed, Sep 08, 2021 at 10:16:19AM +0800, Boqun Feng wrote: > On Fri, Sep 03, 2021 at 10:40:01AM +0200, Sebastian Andrzej Siewior wrote: > > lock_is_held_type(, 1) detects acquired read locks. It only recognized > > locks acquired with lock_acquire_shared(). Read locks acquired with > > lock_acquire_shared_recursive() are not recognized because a `2' is > > stored as the read value. > > > > Rework the check to additionally recognise lock's read value one and two > > as a read held lock. > > > > Fixes: e918188611f07 ("locking: More accurate annotations for read_lock()") > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> > > --- > > v1…v2: > > - simplify the read check to !!read as suggested by Waiman Long. > > > > kernel/locking/lockdep.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > --- a/kernel/locking/lockdep.c > > +++ b/kernel/locking/lockdep.c > > @@ -5366,7 +5366,7 @@ int __lock_is_held(const struct lockdep_ > > struct held_lock *hlock = curr->held_locks + i; > > > > if (match_held_lock(hlock, lock)) { > > - if (read == -1 || hlock->read == read) > > + if (read == -1 || hlock->read == !!read) > > I think this should be: > > !!hlock->read == read > > With that, > > Acked-by: Boqun Feng <boqun.feng@gmail.com>
Thanks!
| |