projects
/
platform
/
adaptation
/
renesas_rcar
/
renesas_kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rtmutex: Detect changes in the pi lock chain
[platform/adaptation/renesas_rcar/renesas_kernel.git]
/
kernel
/
sched
/
deadline.c
diff --git
a/kernel/sched/deadline.c
b/kernel/sched/deadline.c
index
6e79b3f
..
ce85264
100644
(file)
--- a/
kernel/sched/deadline.c
+++ b/
kernel/sched/deadline.c
@@
-490,9
+490,17
@@
static enum hrtimer_restart dl_task_timer(struct hrtimer *timer)
struct sched_dl_entity,
dl_timer);
struct task_struct *p = dl_task_of(dl_se);
struct sched_dl_entity,
dl_timer);
struct task_struct *p = dl_task_of(dl_se);
- struct rq *rq = task_rq(p);
+ struct rq *rq;
+again:
+ rq = task_rq(p);
raw_spin_lock(&rq->lock);
raw_spin_lock(&rq->lock);
+ if (rq != task_rq(p)) {
+ /* Task was moved, retrying. */
+ raw_spin_unlock(&rq->lock);
+ goto again;
+ }
+
/*
* We need to take care of a possible races here. In fact, the
* task might have changed its scheduling policy to something
/*
* We need to take care of a possible races here. In fact, the
* task might have changed its scheduling policy to something