* [PATCH] Forcing subclasses to have same name pointer as their parent class @ 2024-07-04 0:32 botta633 2024-07-03 22:45 ` Boqun Feng 0 siblings, 1 reply; 3+ messages in thread From: botta633 @ 2024-07-04 0:32 UTC (permalink / raw) To: linux-kernel Cc: Peter Zijlstra, Ingo Molnar, Will Deacon, Waiman Long, Boqun Feng Preventing Lockdep_set_subclass from creating a new instance of the string literal. Hence, we will always have the class->name. This prevents kernel panics when locking up a lock class while comparing class locks and class names. Signed-off-by: botta633 <bottaawesome633@gmail.com> --- 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 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] Forcing subclasses to have same name pointer as their parent class 2024-07-04 0:32 [PATCH] Forcing subclasses to have same name pointer as their parent class botta633 @ 2024-07-03 22:45 ` Boqun Feng [not found] ` <CA+6bSasi4W8zEXu+gqGnpvJpFg0EDeW7fwnFMCqYeFH0hcCGag@mail.gmail.com> 0 siblings, 1 reply; 3+ messages in thread From: Boqun Feng @ 2024-07-03 22:45 UTC (permalink / raw) To: botta633 Cc: linux-kernel, Peter Zijlstra, Ingo Molnar, Will Deacon, Waiman Long, linux-ext4, Theodore Ts'o, Andreas Dilger, syzkaller, Paul E. McKenney Hi, On Thu, Jul 04, 2024 at 03:32:24AM +0300, botta633 wrote: > Preventing Lockdep_set_subclass from creating a new instance of the > string literal. Hence, we will always have the class->name. This > prevents kernel panics when locking up a lock class while comparing > class locks and class names. Good catch! Thanks. > > Please remove the extra blank line here. > Signed-off-by: botta633 <bottaawesome633@gmail.com> Do you mind putting your real name here? Besides, IIUC, this is fixing: https://syzkaller.appspot.com/bug?extid=7f4a6f7f7051474e40ad , right? If so, there are some more things: * Copy ext4 and syzkaller people, so that you could get more tests. * Since this is a bug fix, could you please figure out which commit introduces the issue, so that you can put a correct "Fixes:" tag along with your signed-off-by? * Since the issue was reported by syzkaller, you should put their "Reported-by" tag, they have an example in the website I paste above. * Please also Cc stable mail list so that the fix can be backported, you can find the information on "Cc: stable" tag at: https://docs.kernel.org/process/stable-kernel-rules.html * Last but not the least, could you try to add a test case in lib/locking-selftest.c to ensure the issue you fixed won't happen again? This could be tricky, since you will need to fight against the compiler to generate two string literals with the same content. [Cc ext4 and syzkaller] Regards, Boqun > --- > 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 > ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <CA+6bSasi4W8zEXu+gqGnpvJpFg0EDeW7fwnFMCqYeFH0hcCGag@mail.gmail.com>]
* Re: [PATCH] Forcing subclasses to have same name pointer as their parent class [not found] ` <CA+6bSasi4W8zEXu+gqGnpvJpFg0EDeW7fwnFMCqYeFH0hcCGag@mail.gmail.com> @ 2024-07-08 23:55 ` Boqun Feng 0 siblings, 0 replies; 3+ messages in thread From: Boqun Feng @ 2024-07-08 23:55 UTC (permalink / raw) To: ahmed Ehab Cc: linux-kernel, Peter Zijlstra, Ingo Molnar, Will Deacon, Waiman Long, linux-ext4, Theodore Ts'o, Andreas Dilger, syzkaller, Paul E. McKenney On Tue, Jul 09, 2024 at 02:26:05AM +0300, ahmed Ehab wrote: > Hi, > thanks for the great feedback. > > > > > * Last but not the least, could you try to add a test case in > lib/locking-selftest.c to ensure the issue you fixed won't happen > again? This could be tricky, since you will need to fight against > the compiler to generate two string literals with the same content.* > I added a test case, but I am not sure how to run this test file as it > doesn't seem to be part of the kselftests. I compiled it successfully by > setting the lock debugging option but couldn't get it to run. > My usual approach is: set CONFIG_DEBUG_LOCKING_API_SELFTESTS=y, compile a kernel, and boot it in qemu, the test result will show in serial log of the VM. Hope that helps. Regards, Boqun > Regards, > Ahmed > > On Thu, Jul 4, 2024 at 1:46 AM Boqun Feng <boqun.feng@gmail.com> wrote: > > > Hi, > > > > On Thu, Jul 04, 2024 at 03:32:24AM +0300, botta633 wrote: > > > Preventing Lockdep_set_subclass from creating a new instance of the > > > string literal. Hence, we will always have the class->name. This > > > prevents kernel panics when locking up a lock class while comparing > > > class locks and class names. > > > > Good catch! Thanks. > > > > > > > > > > > > Please remove the extra blank line here. > > > > > Signed-off-by: botta633 <bottaawesome633@gmail.com> > > > > Do you mind putting your real name here? Besides, IIUC, this is fixing: > > > > https://syzkaller.appspot.com/bug?extid=7f4a6f7f7051474e40ad > > > > > > , right? If so, there are some more things: > > > > * Copy ext4 and syzkaller people, so that you could get more > > tests. > > > > * Since this is a bug fix, could you please figure out which > > commit introduces the issue, so that you can put a correct > > "Fixes:" tag along with your signed-off-by? > > > > * Since the issue was reported by syzkaller, you should put their > > "Reported-by" tag, they have an example in the website I paste > > above. > > > > * Please also Cc stable mail list so that the fix can be > > backported, you can find the information on "Cc: stable" tag at: > > > > https://docs.kernel.org/process/stable-kernel-rules.html > > > > * Last but not the least, could you try to add a test case in > > lib/locking-selftest.c to ensure the issue you fixed won't > > happen again? This could be tricky, since you will need to fight > > against the compiler to generate two string literals with the > > same content. > > > > [Cc ext4 and syzkaller] > > > > Regards, > > Boqun > > > > > --- > > > 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 > > > > > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-07-09 0:06 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-04 0:32 [PATCH] Forcing subclasses to have same name pointer as their parent class botta633
2024-07-03 22:45 ` Boqun Feng
[not found] ` <CA+6bSasi4W8zEXu+gqGnpvJpFg0EDeW7fwnFMCqYeFH0hcCGag@mail.gmail.com>
2024-07-08 23:55 ` Boqun Feng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox