aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/locking
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/locking')
-rw-r--r--kernel/locking/mutex.c4
-rw-r--r--kernel/locking/rwsem-xadd.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c
index 4cccea6b8934..a8546e29671e 100644
--- a/kernel/locking/mutex.c
+++ b/kernel/locking/mutex.c
@@ -27,6 +27,8 @@
27#include <linux/debug_locks.h> 27#include <linux/debug_locks.h>
28#include <linux/osq_lock.h> 28#include <linux/osq_lock.h>
29 29
30#include <litmus/litmus.h> /* for is_realtime() */
31
30/* 32/*
31 * In the DEBUG case we are using the "NULL fastpath" for mutexes, 33 * In the DEBUG case we are using the "NULL fastpath" for mutexes,
32 * which forces all calls into the slowpath: 34 * which forces all calls into the slowpath:
@@ -368,7 +370,7 @@ static bool mutex_optimistic_spin(struct mutex *lock,
368 * we're an RT task that will live-lock because we won't let 370 * we're an RT task that will live-lock because we won't let
369 * the owner complete. 371 * the owner complete.
370 */ 372 */
371 if (!owner && (need_resched() || rt_task(task))) 373 if (!owner && (need_resched() || rt_task(task) || is_realtime(task)))
372 break; 374 break;
373 375
374 /* 376 /*
diff --git a/kernel/locking/rwsem-xadd.c b/kernel/locking/rwsem-xadd.c
index 3417d0172a5d..873ffca2321c 100644
--- a/kernel/locking/rwsem-xadd.c
+++ b/kernel/locking/rwsem-xadd.c
@@ -18,6 +18,8 @@
18 18
19#include "rwsem.h" 19#include "rwsem.h"
20 20
21#include <litmus/litmus.h> /* for is_realtime() */
22
21/* 23/*
22 * Guide to the rw_semaphore's count field for common values. 24 * Guide to the rw_semaphore's count field for common values.
23 * (32-bit case illustrated, similar for 64-bit) 25 * (32-bit case illustrated, similar for 64-bit)
@@ -392,7 +394,7 @@ static bool rwsem_optimistic_spin(struct rw_semaphore *sem)
392 * we're an RT task that will live-lock because we won't let 394 * we're an RT task that will live-lock because we won't let
393 * the owner complete. 395 * the owner complete.
394 */ 396 */
395 if (!owner && (need_resched() || rt_task(current))) 397 if (!owner && (need_resched() || rt_task(current) || is_realtime(current)))
396 break; 398 break;
397 399
398 /* 400 /*