Commit b106bcf0 authored by David Laight's avatar David Laight Committed by Linus Torvalds
Browse files

locking/osq_lock: Clarify osq_wait_next()



Directly return NULL or 'next' instead of breaking out of the loop.

Signed-off-by: default avatarDavid Laight <david.laight@aculab.com>
[ Split original patch into two independent parts  - Linus ]
Link: https://lore.kernel.org/lkml/7c8828aec72e42eeb841ca0ee3397e9a@AcuMS.aculab.com/


Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 563adbfc
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -55,7 +55,6 @@ osq_wait_next(struct optimistic_spin_queue *lock,
	      struct optimistic_spin_node *node,
	      int old_cpu)
{
	struct optimistic_spin_node *next = NULL;
	int curr = encode_cpu(smp_processor_id());

	for (;;) {
@@ -66,7 +65,7 @@ osq_wait_next(struct optimistic_spin_queue *lock,
			 * will now observe @lock and will complete its
			 * unlock()/unqueue().
			 */
			break;
			return NULL;
		}

		/*
@@ -80,15 +79,15 @@ osq_wait_next(struct optimistic_spin_queue *lock,
		 * wait for a new @node->next from its Step-C.
		 */
		if (node->next) {
			struct optimistic_spin_node *next;

			next = xchg(&node->next, NULL);
			if (next)
				break;
				return next;
		}

		cpu_relax();
	}

	return next;
}

bool osq_lock(struct optimistic_spin_queue *lock)