sched/wait: Deduplicate code with do-while
authorPavel Begunkov <asml.silence@gmail.com>
Tue, 11 Jun 2019 12:29:07 +0000 (15:29 +0300)
committerIngo Molnar <mingo@kernel.org>
Mon, 24 Jun 2019 17:23:40 +0000 (19:23 +0200)
Statements in the loop's body and before it are identical.
Use do-while to not repeat it.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/43ffea6ee2152b90dedf962eac851609e4197218.1560256112.git.asml.silence@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/wait.c

index fa0f9ad..c1e566a 100644 (file)
@@ -118,16 +118,12 @@ static void __wake_up_common_lock(struct wait_queue_head *wq_head, unsigned int
        bookmark.func = NULL;
        INIT_LIST_HEAD(&bookmark.entry);
 
-       spin_lock_irqsave(&wq_head->lock, flags);
-       nr_exclusive = __wake_up_common(wq_head, mode, nr_exclusive, wake_flags, key, &bookmark);
-       spin_unlock_irqrestore(&wq_head->lock, flags);
-
-       while (bookmark.flags & WQ_FLAG_BOOKMARK) {
+       do {
                spin_lock_irqsave(&wq_head->lock, flags);
                nr_exclusive = __wake_up_common(wq_head, mode, nr_exclusive,
                                                wake_flags, key, &bookmark);
                spin_unlock_irqrestore(&wq_head->lock, flags);
-       }
+       } while (bookmark.flags & WQ_FLAG_BOOKMARK);
 }
 
 /**