Commit-ID:  bb632bc44970f75b66df102e831a4fc0692e9159
Gitweb:     http://git.kernel.org/tip/bb632bc44970f75b66df102e831a4fc0692e9159
Author:     Peter Zijlstra <[email protected]>
AuthorDate: Wed, 2 Oct 2013 11:22:20 +0200
Committer:  Ingo Molnar <[email protected]>
CommitDate: Fri, 4 Oct 2013 10:14:45 +0200

sched/wait: Change the wait_exclusive control flow

Purely a preparatory patch; it changes the control flow to match what
will soon be generated by generic code so that that patch can be a
unity transform.

Reviewed-by: Oleg Nesterov <[email protected]>
Signed-off-by: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
---
 include/linux/wait.h | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/include/linux/wait.h b/include/linux/wait.h
index b2afd66..7d7819d 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -428,23 +428,24 @@ do {                                                      
                \
 
 #define __wait_event_interruptible_exclusive(wq, condition, ret)       \
 do {                                                                   \
+       __label__ __out;                                                \
        DEFINE_WAIT(__wait);                                            \
                                                                        \
        for (;;) {                                                      \
                prepare_to_wait_exclusive(&wq, &__wait,                 \
                                        TASK_INTERRUPTIBLE);            \
-               if (condition) {                                        \
-                       finish_wait(&wq, &__wait);                      \
+               if (condition)                                          \
                        break;                                          \
-               }                                                       \
                if (signal_pending(current)) {                          \
                        ret = -ERESTARTSYS;                             \
                        abort_exclusive_wait(&wq, &__wait,              \
                                TASK_INTERRUPTIBLE, NULL);              \
-                       break;                                          \
+                       goto __out;                                     \
                }                                                       \
                schedule();                                             \
        }                                                               \
+       finish_wait(&wq, &__wait);                                      \
+__out: ;                                                               \
 } while (0)
 
 #define wait_event_interruptible_exclusive(wq, condition)              \
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to