Messages in this thread Patch in this message | | | From | Davidlohr Bueso <> | Subject | [PATCH -tip] locking/mutex: Complain upon api misuse wrt interrupt context | Date | Thu, 24 Oct 2019 20:36:34 -0700 |
| |
Sprinkle warning checks, under CONFIG_DEBUG_MUTEXES. While the mutex rules and semantics are explicitly documented, this allows to expose any abusers and robustifies the whole thing. While trylock and unlock are non-blocking, calling from irq context is still forbidden (lock must be within the same context as unlock).
Signed-off-by: Davidlohr Bueso <dbueso@suse.de> --- kernel/locking/mutex.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c index 468a9b8422e3..7e9c316c646c 100644 --- a/kernel/locking/mutex.c +++ b/kernel/locking/mutex.c @@ -733,6 +733,9 @@ static noinline void __sched __mutex_unlock_slowpath(struct mutex *lock, unsigne */ void __sched mutex_unlock(struct mutex *lock) { +#ifdef CONFIG_DEBUG_MUTEXES + WARN_ON(in_interrupt()); +#endif #ifndef CONFIG_DEBUG_LOCK_ALLOC if (__mutex_unlock_fast(lock)) return; @@ -1413,6 +1416,7 @@ int __sched mutex_trylock(struct mutex *lock) #ifdef CONFIG_DEBUG_MUTEXES DEBUG_LOCKS_WARN_ON(lock->magic != lock); + WARN_ON(in_interrupt()); #endif locked = __mutex_trylock(lock); -- 2.16.4
| |