On 9/29/19 9:46 PM, Tetsuo Handa wrote:
On 2019/09/30 9:28, Sasha Levin wrote:As I had said before, it looks like the git-apply mixed up the location
On Sun, Sep 29, 2019 at 11:43:38PM +0900, Tetsuo Handa wrote:Hmm, upstream has two commits with same author, same date, same subject, different hash, different content.
On 2019/09/29 22:54, Greg Kroah-Hartman wrote:We had a revert in the stable trees, but that revert was incorrect.
From: Waiman Long <longman@xxxxxxxxxx>Please drop "[PATCH 4.19 36/63] locking/lockdep: Add debug_locks check in __lock_downgrade()".
[ Upstream commit 513e1073d52e55b8024b4f238a48de7587c64ccf ]
Tetsuo Handa had reported he saw an incorrect "downgrading a read lock"
warning right after a previous lockdep warning. It is likely that the
previous warning turned off lock debugging causing the lockdep to have
inconsistency states leading to the lock downgrade warning.
Fix that by add a check for debug_locks at the beginning of
__lock_downgrade().
We had a revert patch shown below in the past.
Take a look at commit 513e1073d52e55 upstream, it patches
__lock_set_class() (even though the subject line says
__lock_downgrade()). So this is not a backporting error as the revert
said it is, but is rather the intended location to be patched.
If this is actually wrong, then it should be addressed upstream first.
I couldn't find from https://lkml.kernel.org/r/1547093005-26085-1-git-send-email-longman@xxxxxxxxxx that
we want to patch both __lock_set_class() and __lock_downgrade(), but I found that the tip-bot has patched
__lock_downgrade() on "2019-01-21 11:29" and __lock_set_class() on "2019-02-04 8:56".
Seems that we by error patched both functions, though patching both functions should be harmless...
64aa348ed kernel/lockdep.c (Peter Zijlstra 2008-08-11 09:30:21 +0200 4115) static int
00ef9f734 kernel/lockdep.c (Peter Zijlstra 2008-12-04 09:00:17 +0100 4116) __lock_set_class(struct lockdep_map *lock, const char *name,
00ef9f734 kernel/lockdep.c (Peter Zijlstra 2008-12-04 09:00:17 +0100 4117) struct lock_class_key *key, unsigned int subclass,
00ef9f734 kernel/lockdep.c (Peter Zijlstra 2008-12-04 09:00:17 +0100 4118) unsigned long ip)
64aa348ed kernel/lockdep.c (Peter Zijlstra 2008-08-11 09:30:21 +0200 4119) {
64aa348ed kernel/lockdep.c (Peter Zijlstra 2008-08-11 09:30:21 +0200 4120) struct task_struct *curr = current;
8c8889d8e kernel/locking/lockdep.c (Imre Deak 2019-05-24 23:15:08 +0300 4121) unsigned int depth, merged = 0;
41c2c5b86 kernel/locking/lockdep.c (J. R. Okajima 2017-02-03 01:38:15 +0900 4122) struct held_lock *hlock;
64aa348ed kernel/lockdep.c (Peter Zijlstra 2008-08-11 09:30:21 +0200 4123) struct lock_class *class;
64aa348ed kernel/lockdep.c (Peter Zijlstra 2008-08-11 09:30:21 +0200 4124) int i;
64aa348ed kernel/lockdep.c (Peter Zijlstra 2008-08-11 09:30:21 +0200 4125)
513e1073d kernel/locking/lockdep.c (Waiman Long 2019-01-09 23:03:25 -0500 4126) if (unlikely(!debug_locks))
513e1073d kernel/locking/lockdep.c (Waiman Long 2019-01-09 23:03:25 -0500 4127) return 0;
513e1073d kernel/locking/lockdep.c (Waiman Long 2019-01-09 23:03:25 -0500 4128)
6419c4af7 kernel/locking/lockdep.c (J. R. Okajima 2017-02-03 01:38:17 +0900 4162) static int __lock_downgrade(struct lockdep_map *lock, unsigned long ip)
6419c4af7 kernel/locking/lockdep.c (J. R. Okajima 2017-02-03 01:38:17 +0900 4163) {
6419c4af7 kernel/locking/lockdep.c (J. R. Okajima 2017-02-03 01:38:17 +0900 4164) struct task_struct *curr = current;
8c8889d8e kernel/locking/lockdep.c (Imre Deak 2019-05-24 23:15:08 +0300 4165) unsigned int depth, merged = 0;
6419c4af7 kernel/locking/lockdep.c (J. R. Okajima 2017-02-03 01:38:17 +0900 4166) struct held_lock *hlock;
6419c4af7 kernel/locking/lockdep.c (J. R. Okajima 2017-02-03 01:38:17 +0900 4167) int i;
6419c4af7 kernel/locking/lockdep.c (J. R. Okajima 2017-02-03 01:38:17 +0900 4168)
714925805 kernel/locking/lockdep.c (Waiman Long 2019-01-09 23:03:25 -0500 4169) if (unlikely(!debug_locks))
714925805 kernel/locking/lockdep.c (Waiman Long 2019-01-09 23:03:25 -0500 4170) return 0;
714925805 kernel/locking/lockdep.c (Waiman Long 2019-01-09 23:03:25 -0500 4171)
commit 513e1073d52e55b8024b4f238a48de7587c64ccf
Author: Waiman Long <longman@xxxxxxxxxx>
Date: Wed Jan 9 23:03:25 2019 -0500
locking/lockdep: Add debug_locks check in __lock_downgrade()
commit 71492580571467fb7177aade19c18ce7486267f5
Author: Waiman Long <longman@xxxxxxxxxx>
Date: Wed Jan 9 23:03:25 2019 -0500
locking/lockdep: Add debug_locks check in __lock_downgrade()
due to the fact that the hunks are exactly the same for both locations.
So if the patch to be applied does not have the right line number, it
will get applied to the wrong location first.