sched: fix return value of wait_for_completion_interruptible()
authorAndi Kleen <ak@suse.de>
Thu, 18 Oct 2007 19:32:55 +0000 (21:32 +0200)
committerIngo Molnar <mingo@elte.hu>
Thu, 18 Oct 2007 19:32:55 +0000 (21:32 +0200)
The recent wait_for_completion() cleanups:

    commit 8cbbe86dfcfd68ad69916164bdc838d9e09adca8
    Author: Andi Kleen <ak@suse.de>
    Date:   Mon Oct 15 17:00:14 2007 +0200

    sched: cleanup: refactor common code of sleep_on / wait_for_completion

    Refactor common code of sleep_on / wait_for_completion

broke the return value of wait_for_completion_interruptible().
Previously it returned 0 on success, now -1.  Fix that.

Problem found by Geert Uytterhoeven.

[ mingo: fixed whitespace damage ]

Reported-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched.c

index 92721d1534b85f1e2f3b192b041677b50b79b9e9..f6febb25c7b6069e644d45c7b65a170c89fa6313 100644 (file)
@@ -3859,7 +3859,10 @@ EXPORT_SYMBOL(wait_for_completion_timeout);
 
 int __sched wait_for_completion_interruptible(struct completion *x)
 {
-       return wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_INTERRUPTIBLE);
+       long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_INTERRUPTIBLE);
+       if (t == -ERESTARTSYS)
+               return t;
+       return 0;
 }
 EXPORT_SYMBOL(wait_for_completion_interruptible);