From: Boqun Feng <boqun.feng@gmail.com>
To: botta633 <bottaawesome633@gmail.com>
Cc: linux-kernel@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Will Deacon <will@kernel.org>,
Waiman Long <longman@redhat.com>,
linux-ext4@vger.kernel.org, syzkaller@googlegroups.com,
syzbot+7f4a6f7f7051474e40ad@syzkaller.appspotmail.com,
stable@vger.kernel.org
Subject: Re: [PATCH v4 1/2] locking/lockdep: Forcing subclasses to have same name pointer as their parent class
Date: Tue, 20 Aug 2024 14:07:05 -0700 [thread overview]
Message-ID: <ZsUFeQP3tz8TXxrU@boqun-archlinux> (raw)
In-Reply-To: <20240715132638.3141-1-bottaawesome633@gmail.com>
Hi Ahmed,
Sorry I was missing some points on title and changelog, please see below
and refer to Documentation/process/maintainer-tip.rst:
The title needs to be something like:
locking/lockdep: Avoid creating new name string literals in lockdep_set_subclass()
the title and the changlog needs to be in imperative mode.
On Mon, Jul 15, 2024 at 04:26:37PM +0300, botta633 wrote:
> From: Ahmed Ehab <bottaawesome633@gmail.com>
>
> Preventing lockdep_set_subclass from creating a new instance of the
Same here, s/Preventing/Prevent, and when you reference a function, you
want to do "lockdep_set_subclass()" instead of "lockdep_set_subclass".
Besides, overall, you want to structure your changelog as follow:
Syzbot reports a problem that a warning will be triggered while
searching a lock class in look_up_lock_class().
// ^ the problem statement
The cause of the issue is that instead of the existing name of a
lock class, a new name (a string literal) is created and used by
lockdep_set_subclass(), and this results in two lock classes with the
same key but different address of the names, and a WARN_ONCE() is
triggered because of that in look_up_lock_class().
// ^ the analysis of the problem, you can merge the above two into one
// paragraph if that works for you.
To fix this, change lockdep_set_subclass() to use the existing name
instead of a new one. As a result no new name will be created by
lockdep_set_subclass(), hence the warning is avoided.
// ^ the fix.
Please send a new version if these make sense to you. The patch #2 also
needs some changes in the title and changelog, but since that's adding
a new test instead of fixing an issue, you could just write something
like:
Add a test case to ensure that no new name string literal will be
created in lockdep_set_subclass(), otherwise a warning will be triggered
in look_up_lock_class(). Add this to catch the problem in the future.
Thanks!
Regards,
Boqun
> string literal. Hence, we will always have the same class->name among
> parent and subclasses. This prevents kernel panics when looking up a
> lock class while comparing class locks and class names.
>
> Reported-by: <syzbot+7f4a6f7f7051474e40ad@syzkaller.appspotmail.com>
> Fixes: de8f5e4f2dc1f ("lockdep: Introduce wait-type checks")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Ahmed Ehab <bottaawesome633@gmail.com>
> ---
> v3->v4:
> - Fixed subject line truncation.
>
> include/linux/lockdep.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
> index 08b0d1d9d78b..df8fa5929de7 100644
> --- a/include/linux/lockdep.h
> +++ b/include/linux/lockdep.h
> @@ -173,7 +173,7 @@ static inline void lockdep_init_map(struct lockdep_map *lock, const char *name,
> (lock)->dep_map.lock_type)
>
> #define lockdep_set_subclass(lock, sub) \
> - lockdep_init_map_type(&(lock)->dep_map, #lock, (lock)->dep_map.key, sub,\
> + lockdep_init_map_type(&(lock)->dep_map, (lock)->dep_map.name, (lock)->dep_map.key, sub,\
> (lock)->dep_map.wait_type_inner, \
> (lock)->dep_map.wait_type_outer, \
> (lock)->dep_map.lock_type)
> --
> 2.45.2
next prev parent reply other threads:[~2024-08-20 21:07 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-15 13:26 [PATCH v4 1/2] locking/lockdep: Forcing subclasses to have same name pointer as their parent class botta633
2024-07-15 13:26 ` [PATCH v4 2/2] locking/lockdep: Testing lock class and subclass got the same name pointer botta633
2024-08-03 0:50 ` Boqun Feng
[not found] ` <CA+6bSatQkwonesz4Pa3S7E-GAWHCwq=xuo_E9e3gXfJwV5_-jw@mail.gmail.com>
2024-08-07 2:21 ` Boqun Feng
2024-08-09 22:01 ` [PATCH v5 " Ahmed Ehab
2024-08-03 0:40 ` [PATCH v4 1/2] locking/lockdep: Forcing subclasses to have same name pointer as their parent class Boqun Feng
2024-08-20 21:07 ` Boqun Feng [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-07-15 6:34 botta633
2024-07-15 5:15 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZsUFeQP3tz8TXxrU@boqun-archlinux \
--to=boqun.feng@gmail.com \
--cc=bottaawesome633@gmail.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=longman@redhat.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=stable@vger.kernel.org \
--cc=syzbot+7f4a6f7f7051474e40ad@syzkaller.appspotmail.com \
--cc=syzkaller@googlegroups.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.