linux-stable/kernel/locking
Waiman Long 59da7942ca locking/lockdep: Add debug_locks check in __lock_downgrade()
[ Upstream commit 513e1073d5 ]

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().

Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Reported-by: syzbot+53383ae265fb161ef488@syzkaller.appspotmail.com
Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will.deacon@arm.com>
Link: https://lkml.kernel.org/r/1547093005-26085-1-git-send-email-longman@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-10-05 12:30:10 +02:00
..
Makefile locking/lglock: Remove lglock implementation 2016-09-22 15:25:56 +02:00
lockdep.c locking/lockdep: Add debug_locks check in __lock_downgrade() 2019-10-05 12:30:10 +02:00
lockdep_internals.h lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined 2016-11-18 11:33:19 -08:00
lockdep_proc.c locking/lockdep: Hide unused 'class' variable 2019-08-04 09:33:42 +02:00
lockdep_states.h
locktorture.c locking/locktorture: Fix num reader/writer corner cases 2018-03-22 09:17:58 +01:00
mcs_spinlock.h locking/mcs: Fix mcs_spin_lock() ordering 2016-02-29 10:02:41 +01:00
mutex-debug.c locking: avoid passing around 'thread_info' in mutex debugging code 2016-06-23 12:11:17 -07:00
mutex-debug.h Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-25 12:41:29 -07:00
mutex.c locking: avoid passing around 'thread_info' in mutex debugging code 2016-06-23 12:11:17 -07:00
mutex.h Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-25 12:41:29 -07:00
osq_lock.c locking/osq_lock: Fix osq_lock queue corruption 2018-09-19 22:47:11 +02:00
percpu-rwsem.c locking/percpu-rwsem: Optimize readers and reduce global impact 2016-08-10 14:34:01 +02:00
qrwlock.c locking/atomic, arch/qrwlock: Employ atomic_fetch_add_acquire() 2016-06-16 10:48:34 +02:00
qspinlock.c locking/qspinlock, x86: Provide liveness guarantee 2018-12-21 14:11:34 +01:00
qspinlock_paravirt.h locking/qspinlock: Remove duplicate clear_pending() function from PV code 2018-12-21 14:11:34 +01:00
qspinlock_stat.h locking/pvstat: Separate wait_again and spurious wakeup stats 2016-08-10 14:16:02 +02:00
rtmutex-debug.c rtmutex: Cleanup deadlock detector debug logic 2014-06-21 22:05:30 +02:00
rtmutex-debug.h rtmutex: Cleanup deadlock detector debug logic 2014-06-21 22:05:30 +02:00
rtmutex.c futex,rt_mutex: Restructure rt_mutex_finish_proxy_lock() 2019-03-13 14:05:01 -07:00
rtmutex.h rtmutex: Cleanup deadlock detector debug logic 2014-06-21 22:05:30 +02:00
rtmutex_common.h futex,rt_mutex: Restructure rt_mutex_finish_proxy_lock() 2019-03-13 14:05:01 -07:00
rwsem-spinlock.c locking/rwsem-spinlock: Fix EINTR branch in __down_write_common() 2017-07-15 12:16:15 +02:00
rwsem-xadd.c locking/rwsem: Prevent decrement of reader count before increment 2019-05-21 18:48:55 +02:00
rwsem.c locking/rwsem: Add reader-owned state to the owner field 2016-06-08 15:16:59 +02:00
rwsem.h locking/rwsem: Protect all writes to owner by WRITE_ONCE() 2016-06-08 15:16:59 +02:00
semaphore.c locking/semaphore: Resolve some shadow warnings 2014-09-04 07:17:24 +02:00
spinlock.c spinlock: Add spin_lock_bh_nested() 2015-01-03 14:32:57 -05:00
spinlock_debug.c locking/spinlock/debug: Remove spinlock lockup detection code 2017-09-02 07:07:54 +02:00