sched: Only call post_select() if task is not in error state.
authorAndre Noll <maan@systemlinux.org>
Tue, 15 Mar 2011 21:05:24 +0000 (22:05 +0100)
committerAndre Noll <maan@systemlinux.org>
Tue, 15 Mar 2011 21:05:24 +0000 (22:05 +0100)
Fixes a bug introduced in 86611501 which caused para_audiod to segfault
if the connection to para_server terminated unexpectedly.

para_audiod relies (in kill_btrn()) on a task's ->post_select method
never being called if t->error is negative.

sched.c

diff --git a/sched.c b/sched.c
index 4e989d3..9be3a2e 100644 (file)
--- a/sched.c
+++ b/sched.c
@@ -93,7 +93,8 @@ static void sched_post_select(struct sched *s)
        struct task *t, *tmp;
 
        list_for_each_entry_safe(t, tmp, &post_select_list, post_select_node) {
-               call_post_select(s, t);
+               if (t->error >= 0)
+                       call_post_select(s, t);
 //             PARA_INFO_LOG("%s: %d\n", t->status, t->ret);
                if (t->error >= 0)
                        continue;