From 7a15c1cbc5e4cd58bc6d97943307b8df3fc20d69 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sat, 6 Apr 2019 13:55:45 -0400 Subject: [PATCH] kernel: Add interrupts checks for switch_lock functions. --- src/system/kernel/locks/lock.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/system/kernel/locks/lock.cpp b/src/system/kernel/locks/lock.cpp index 3ab0e49932..ab62a1ac49 100644 --- a/src/system/kernel/locks/lock.cpp +++ b/src/system/kernel/locks/lock.cpp @@ -676,6 +676,13 @@ mutex_lock_threads_locked(mutex* lock, InterruptsSpinLocker* locker) status_t mutex_switch_lock(mutex* from, mutex* to) { +#if KDEBUG + if (!gKernelStartup && !are_interrupts_enabled()) { + panic("mutex_switch_lock(): called with interrupts disabled " + "for locks %p, %p", from, to); + } +#endif + InterruptsSpinLocker locker(to->lock); mutex_unlock(from); @@ -687,6 +694,13 @@ mutex_switch_lock(mutex* from, mutex* to) status_t mutex_switch_from_read_lock(rw_lock* from, mutex* to) { +#if KDEBUG + if (!gKernelStartup && !are_interrupts_enabled()) { + panic("mutex_switch_from_read_lock(): called with interrupts disabled " + "for locks %p, %p", from, to); + } +#endif + InterruptsSpinLocker locker(to->lock); #if KDEBUG_RW_LOCK_DEBUG