aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Brandenburg <bbb@mpi-sws.org>2013-07-25 16:56:55 -0400
committerBjoern Brandenburg <bbb@mpi-sws.org>2013-08-07 03:47:03 -0400
commit277efe46abaf2c7b49b7b28417bc77ae40445be2 (patch)
treea00844b64b0656401871103ceaf54cd4419137f8
parent1288313c31e75a5138e4c87901eda10a07ee80ca (diff)
Don't call set_tsk_need_resched() on remote LITMUS^RT task
This patch fixes a BUG_ON() in litmus/preempt.c:33 reported by Felipe Cerqueira & Manohar Vanga.
-rw-r--r--kernel/sched/core.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index c202f946f54f..344855ef752d 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -529,9 +529,14 @@ void resched_task(struct task_struct *p)
529 if (test_tsk_need_resched(p)) 529 if (test_tsk_need_resched(p))
530 return; 530 return;
531 531
532 set_tsk_need_resched(p);
533
534 cpu = task_cpu(p); 532 cpu = task_cpu(p);
533
534 /* Cannot call set_tsk_need_resched() on LITMUS^RT task
535 * on remote core. Only policy plugins may do this via
536 * litmus_reschedule(). */
537 if (!is_realtime(p) || cpu == smp_processor_id())
538 set_tsk_need_resched(p);
539
535 if (cpu == smp_processor_id()) 540 if (cpu == smp_processor_id())
536 return; 541 return;
537 542