diff options
Diffstat (limited to 'kernel/sched_rt.c')
| -rw-r--r-- | kernel/sched_rt.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c index 76e82851754..0a6d2e51642 100644 --- a/kernel/sched_rt.c +++ b/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 */  | 
