aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2011-02-12 16:40:43 -0500
committerJonathan <hermanjl@bonham.cs.unc.edu>2011-04-21 15:28:17 -0400
commit9ad36912200db8b5976ff33e03cfa713c2765d4d (patch)
tree58d1ca8953bbb8b8207ecee7120e55950eeac412
parent7cb15e61e4ce73eb427b095f266a10a668c80704 (diff)
bugfix: release master CPU must signal task was picked
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);