diff options
author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2011-02-12 16:40:43 -0500 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2011-04-12 21:39:15 -0400 |
commit | fa08f1949dadd0cbc4dcf71eb11dede76a8ad2ad (patch) | |
tree | 2eb3a9e2afe8866f1e829e5e3a5ee2fda29cd0bf | |
parent | c05eaa8091d2cadc20363d44a85ee454262f4bc2 (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.c | 4 |
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); |