Xie Yongji
b4df458223
locking/rwsem: Fix (possible) missed wakeup
...
[ Upstream commit e158488be27b157802753a59b336142dc0eb0380 ]
Because wake_q_add() can imply an immediate wakeup (cmpxchg failure
case), we must not rely on the wakeup being delayed. However, commit:
e38513905e ("locking/rwsem: Rework zeroing reader waiter->task")
relies on exactly that behaviour in that the wakeup must not happen
until after we clear waiter->task.
[ peterz: Added changelog. ]
Signed-off-by: Xie Yongji <xieyongji@baidu.com>
Signed-off-by: Zhang Yu <zhangyu31@baidu.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Fixes: e38513905e ("locking/rwsem: Rework zeroing reader waiter->task")
Link: https://lkml.kernel.org/r/1543495830-2644-1-git-send-email-xieyongji@baidu.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-03-05 17:57:05 +01:00
..
lockdep.c
locking/lockdep: Fix debug_locks off performance problem
2018-11-13 11:16:48 -08: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
lockdep: Fix lock_chain::base size
2016-04-23 13:53:03 +02:00
lockdep_states.h
locktorture.c
locking/locktorture: Fix num reader/writer corner cases
2018-03-22 09:17:58 +01:00
Makefile
locking/lglock: Remove lglock implementation
2016-09-22 15:25:56 +02: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
rtmutex: Fix PI chain order integrity
2018-03-22 09:17:47 +01:00
rtmutex.h
rtmutex: Cleanup deadlock detector debug logic
2014-06-21 22:05:30 +02:00
rtmutex_common.h
rtmutex: Fix PI chain order integrity
2018-03-22 09:17:47 +01: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: Fix (possible) missed wakeup
2019-03-05 17:57:05 +01: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