locking/osq_lock: Clarify osq_wait_next()
Directly return NULL or 'next' instead of breaking out of the loop. Signed-off-by: David 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: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
563adbfc35
commit
b106bcf0f9
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue