aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2011-02-12 16:40:43 -0500
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2011-04-12 21:39:15 -0400
commitfa08f1949dadd0cbc4dcf71eb11dede76a8ad2ad (patch)
tree2eb3a9e2afe8866f1e829e5e3a5ee2fda29cd0bf
parentc05eaa8091d2cadc20363d44a85ee454262f4bc2 (diff)
bugfix: release master CPU must signal task was pickedwip-release-master-fix
Otherwise, the release master CPU may try to reschedule in an infinite loop.
-rw-r--r--litmus/sched_gsn_edf.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/litmus/sched_gsn_edf.c b/litmus/sched_gsn_edf.c
index c5c9600c33d8..2a649beed791 100644
--- a/litmus/sched_gsn_edf.c
+++ b/litmus/sched_gsn_edf.c
@@ -374,8 +374,10 @@ static struct task_struct* gsnedf_schedule(struct task_struct * prev)
374 /* Bail out early if we are the release master. 374 /* Bail out early if we are the release master.
375 * The release master never schedules any real-time tasks. 375 * The release master never schedules any real-time tasks.
376 */ 376 */
377 if (gsnedf.release_master == entry->cpu) 377 if (gsnedf.release_master == entry->cpu) {
378 sched_state_task_picked();
378 return NULL; 379 return NULL;
380 }
379#endif 381#endif
380 382
381 raw_spin_lock(&gsnedf_lock); 383 raw_spin_lock(&gsnedf_lock);