Re: [PATCH 4.19 36/63] locking/lockdep: Add debug_locks check in __lock_downgrade()

From: Tetsuo Handa
Date: Sun Sep 29 2019 - 10:44:41 EST


On 2019/09/29 22:54, Greg Kroah-Hartman wrote:
> From: Waiman Long <longman@xxxxxxxxxx>
>
> [ 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().

Please drop "[PATCH 4.19 36/63] locking/lockdep: Add debug_locks check in __lock_downgrade()".
We had a revert patch shown below in the past.

"[PATCH 4.19 37/63] locking/lockdep: Add debug_locks check in __lock_downgrade() - again" seems the correct patch.


On 2019/04/25 17:08, gregkh@xxxxxxxxxxxxxxxxxxx wrote:>
> This is a note to let you know that I've just added the patch titled
>
> Revert "locking/lockdep: Add debug_locks check in __lock_downgrade()"
>
> to the 4.19-stable tree which can be found at:
> http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
>
> The filename of the patch is:
> revert-locking-lockdep-add-debug_locks-check-in-__lock_downgrade.patch
> and it can be found in the queue-4.19 subdirectory.
>
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable@xxxxxxxxxxxxxxx> know about it.
>
>
>>From 7f437eec35a20f40d9ff82ae1c072b211c29e8e0 Mon Sep 17 00:00:00 2001
> From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Date: Thu, 25 Apr 2019 10:00:43 +0200
> Subject: Revert "locking/lockdep: Add debug_locks check in __lock_downgrade()"
>
> From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>
> This reverts commit 0e0f7b30721233ce610bde2395a8e58ff7771475 which was
> commit 71492580571467fb7177aade19c18ce7486267f5 upstream.
>
> Tetsuo rightly points out that the backport here is incorrect, as it
> touches the __lock_set_class function instead of the intended
> __lock_downgrade function.
>
> Reported-by: Tetsuo Handa <penguin-kernel@xxxxxxxxxxxxxxxxxxx>
> Cc: Waiman Long <longman@xxxxxxxxxx>
> Cc: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Will Deacon <will.deacon@xxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Sasha Levin <sashal@xxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> ---
> kernel/locking/lockdep.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> --- a/kernel/locking/lockdep.c
> +++ b/kernel/locking/lockdep.c
> @@ -3567,9 +3567,6 @@ __lock_set_class(struct lockdep_map *loc
> unsigned int depth;
> int i;
>
> - if (unlikely(!debug_locks))
> - return 0;
> -
> depth = curr->lockdep_depth;
> /*
> * This function is about (re)setting the class of a held lock,
>
>