diff options
Diffstat (limited to 'kernel/sched/wait.c')
-rw-r--r-- | kernel/sched/wait.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c index 17f11c6b0a9f..d6afed6d0752 100644 --- a/kernel/sched/wait.c +++ b/kernel/sched/wait.c | |||
@@ -70,9 +70,10 @@ static void __wake_up_common(struct wait_queue_head *wq_head, unsigned int mode, | |||
70 | 70 | ||
71 | list_for_each_entry_safe(curr, next, &wq_head->head, entry) { | 71 | list_for_each_entry_safe(curr, next, &wq_head->head, entry) { |
72 | unsigned flags = curr->flags; | 72 | unsigned flags = curr->flags; |
73 | 73 | int ret = curr->func(curr, mode, wake_flags, key); | |
74 | if (curr->func(curr, mode, wake_flags, key) && | 74 | if (ret < 0) |
75 | (flags & WQ_FLAG_EXCLUSIVE) && !--nr_exclusive) | 75 | break; |
76 | if (ret && (flags & WQ_FLAG_EXCLUSIVE) && !--nr_exclusive) | ||
76 | break; | 77 | break; |
77 | } | 78 | } |
78 | } | 79 | } |