From 822696eb003bb63a1d844eb034fbdca0550d86ef Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Wed, 5 Mar 2008 10:00:12 -0500 Subject: [PATCH] --- yaml --- r: 87031 b: refs/heads/master c: 6fa46fa526f2cab9ce21fa5e39501553a40d196d h: refs/heads/master i: 87029: 4d5d80e6239ea89959bdd13d3e678bd5cb6fc0f9 87027: 446251fc3862447d8d01e01a95b56f55785b470d 87023: c47fe67e616eeb32c7cb99021e1b3556bd88c7d1 v: v3 --- [refs] | 2 +- trunk/kernel/sched_rt.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 778fd7b2a639..9661dd1b4036 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 810b38179e9e4d4f57b4b733767bb08f8291a965 +refs/heads/master: 6fa46fa526f2cab9ce21fa5e39501553a40d196d diff --git a/trunk/kernel/sched_rt.c b/trunk/kernel/sched_rt.c index 76e828517541..0a6d2e516420 100644 --- a/trunk/kernel/sched_rt.c +++ b/trunk/kernel/sched_rt.c @@ -1107,9 +1107,11 @@ static void prio_changed_rt(struct rq *rq, struct task_struct *p, pull_rt_task(rq); /* * If there's a higher priority task waiting to run - * then reschedule. + * then reschedule. Note, the above pull_rt_task + * can release the rq lock and p could migrate. + * Only reschedule if p is still on the same runqueue. */ - if (p->prio > rq->rt.highest_prio) + if (p->prio > rq->rt.highest_prio && rq->curr == p) resched_task(p); #else /* For UP simply resched on drop of prio */