aboutsummaryrefslogtreecommitdiffstats
path: root/litmus
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2011-02-12 16:40:43 -0500
committerChristopher Kenna <cjk@cs.unc.edu>2011-04-12 22:11:55 -0400
commit6d4cc883ec2470500be6c95fd2e7c6944e89c3e8 (patch)
tree85b589ef61a38ac8b87e1b2331e492002127ebac /litmus
parent0f6a8e02773f8c23b5b6a3dbfa044e50c9d7d811 (diff)
bugfix: release master CPU must signal task was picked
Otherwise, the release master CPU may try to reschedule in an infinite loop.
Diffstat (limited to 'litmus')
-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 08b8847ede97..3092797480f8 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);