[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5ca7b2a2-1e9d-4d90-8459-1aa35b30b49c@lucifer.local>
Date: Fri, 16 Jan 2026 16:21:29 +0000
From: Lorenzo Stoakes <lorenzo.stoakes@...cle.com>
To: Sebastian Andrzej Siewior <bigeasy@...utronix.de>
Cc: Peter Zijlstra <peterz@...radead.org>,
Andrew Morton <akpm@...ux-foundation.org>,
David Hildenbrand <david@...nel.org>,
"Liam R . Howlett" <Liam.Howlett@...cle.com>,
Vlastimil Babka <vbabka@...e.cz>, Mike Rapoport <rppt@...nel.org>,
Suren Baghdasaryan <surenb@...gle.com>, Michal Hocko <mhocko@...e.com>,
Shakeel Butt <shakeel.butt@...ux.dev>, Jann Horn <jannh@...gle.com>,
linux-mm@...ck.org, linux-kernel@...r.kernel.org,
linux-rt-devel@...ts.linux.dev, Ingo Molnar <mingo@...hat.com>,
Will Deacon <will@...nel.org>, Boqun Feng <boqun.feng@...il.com>,
Waiman Long <longman@...hat.com>,
Clark Williams <clrkwllms@...nel.org>,
Steven Rostedt <rostedt@...dmis.org>
Subject: Re: [PATCH RESEND 1/3] locking: add rwsem_is_write_locked(), update
non-lockdep asserts
On Fri, Jan 16, 2026 at 04:57:43PM +0100, Sebastian Andrzej Siewior wrote:
> On 2026-01-16 15:50:24 [+0000], Lorenzo Stoakes wrote:
> > No, but we need to be able to assert that one of two locks are held and we
> > don't want the failure of one being held to cause an assert when the other
> > isn't.
>
> But why don't you use the lockdep based check? That assert only ensures
Not sure what you mean, the checks I'm adding don't exist yet.
> that it is locked at the time you did the check. This does not mean you
> are owner - it could be owned by another task which is unrelated to your
> cause.
Yup I'm aware that lockdep tests more than a simple assert.
I wasn't aware this was possible with the lockdep primitives, mea culpa.
Also this came out of a previous discussion where I added a similar
predicate vma_is_detached() and Suren suggested similar for the locks.
Anyway, I went and looked and yes I see there's lockdep_is_held() for
instance.
However, I'd STILL need to do what I'm doing here to account for
CONFIG_DEBUG_VM && !CONFIG_LOCKDEP configurations right?
So I'll respin later with if (IS_ENABLED(CONFIG_LOCKDEP)) ...
And sprinkle with some lockdep_is_held() and see how that works.
I mean rwsem_is_locked() is already specified, so naming is going to be a
thing now but I guess:
static inline bool rwsem_is_locked_nolockdep(const struct rw_semaphore *sem)
{
return rw_base_is_locked(&sem->rwbase);
}
static inline bool rwsem_is_locked(const struct rw_semaphore *sem)
{
if (IS_ENABLED(CONFIG_LOCKDEP))
return lockdep_is_held(sem);
return rwsem_is_locked_nolockdep(sem);
}
And obviously equivalent for the write case is what's necessary now right?
Or am I misunderstanding you?
>
> Sebastian
Thanks, Lorenzo
Powered by blists - more mailing lists