[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aLjtmm70QBr2rdoS@hyeyoo>
Date: Thu, 4 Sep 2025 10:38:34 +0900
From: Harry Yoo <harry.yoo@...cle.com>
To: Vlastimil Babka <vbabka@...e.cz>
Cc: Suren Baghdasaryan <surenb@...gle.com>,
"Liam R. Howlett" <Liam.Howlett@...cle.com>,
Christoph Lameter <cl@...two.org>,
David Rientjes <rientjes@...gle.com>,
Roman Gushchin <roman.gushchin@...ux.dev>,
Uladzislau Rezki <urezki@...il.com>,
Sidhartha Kumar <sidhartha.kumar@...cle.com>, linux-mm@...ck.org,
linux-kernel@...r.kernel.org, rcu@...r.kernel.org,
maple-tree@...ts.infradead.org, Alexei Starovoitov <ast@...nel.org>,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>
Subject: Re: [PATCH v7 01/21] locking/local_lock: Expose dep_map in
local_trylock_t.
On Wed, Sep 03, 2025 at 02:59:43PM +0200, Vlastimil Babka wrote:
> From: Alexei Starovoitov <ast@...nel.org>
>
> lockdep_is_held() macro assumes that "struct lockdep_map dep_map;"
> is a top level field of any lock that participates in LOCKDEP.
> Make it so for local_trylock_t.
>
> Reviewed-by: Sebastian Andrzej Siewior <bigeasy@...utronix.de>
> Signed-off-by: Alexei Starovoitov <ast@...nel.org>
> Signed-off-by: Vlastimil Babka <vbabka@...e.cz>
> ---
Looks good to me,
Reviewed-by: Harry Yoo <harry.yoo@...cle.com>
> include/linux/local_lock_internal.h | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/include/linux/local_lock_internal.h b/include/linux/local_lock_internal.h
> index d80b5306a2c0ccf95a3405b6b947b5f1f9a3bd38..949de37700dbc10feafc06d0b52382cf2e00c694 100644
> --- a/include/linux/local_lock_internal.h
> +++ b/include/linux/local_lock_internal.h
> @@ -17,7 +17,10 @@ typedef struct {
>
> /* local_trylock() and local_trylock_irqsave() only work with local_trylock_t */
> typedef struct {
> - local_lock_t llock;
> +#ifdef CONFIG_DEBUG_LOCK_ALLOC
> + struct lockdep_map dep_map;
> + struct task_struct *owner;
> +#endif
> u8 acquired;
> } local_trylock_t;
>
> @@ -31,7 +34,7 @@ typedef struct {
> .owner = NULL,
>
> # define LOCAL_TRYLOCK_DEBUG_INIT(lockname) \
> - .llock = { LOCAL_LOCK_DEBUG_INIT((lockname).llock) },
> + LOCAL_LOCK_DEBUG_INIT(lockname)
>
> static inline void local_lock_acquire(local_lock_t *l)
> {
> @@ -81,7 +84,7 @@ do { \
> local_lock_debug_init(lock); \
> } while (0)
>
> -#define __local_trylock_init(lock) __local_lock_init(lock.llock)
> +#define __local_trylock_init(lock) __local_lock_init((local_lock_t *)lock)
>
> #define __spinlock_nested_bh_init(lock) \
> do { \
>
> --
> 2.51.0
>
--
Cheers,
Harry / Hyeonggon
Powered by blists - more mailing lists