forked from Minki/linux
3a010c4932
When a interruptible mutex locker is interrupted by a signal
without acquiring this lock and removed from the wait queue.
if the mutex isn't contended enough to have a waiter
put into the wait queue again, the setting of the WAITER
bit will force mutex locker to go into the slowpath to
acquire the lock every time, so if the wait queue is empty,
the WAITER bit need to be clear.
Fixes: 040a0a3710
("mutex: Add support for wound/wait style locks")
Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Zqiang <qiang.zhang@windriver.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20210517034005.30828-1-qiang.zhang@windriver.com
24 lines
808 B
C
24 lines
808 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Mutexes: blocking mutual exclusion locks
|
|
*
|
|
* started by Ingo Molnar:
|
|
*
|
|
* Copyright (C) 2004, 2005, 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
|
|
*
|
|
* This file contains mutex debugging related internal prototypes, for the
|
|
* !CONFIG_DEBUG_MUTEXES case. Most of them are NOPs:
|
|
*/
|
|
|
|
#define debug_mutex_wake_waiter(lock, waiter) do { } while (0)
|
|
#define debug_mutex_free_waiter(waiter) do { } while (0)
|
|
#define debug_mutex_add_waiter(lock, waiter, ti) do { } while (0)
|
|
#define debug_mutex_remove_waiter(lock, waiter, ti) do { } while (0)
|
|
#define debug_mutex_unlock(lock) do { } while (0)
|
|
#define debug_mutex_init(lock, name, key) do { } while (0)
|
|
|
|
static inline void
|
|
debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter)
|
|
{
|
|
}
|