locking/osq_lock: Clarify osq_wait_next()

JIRA: https://issues.redhat.com/browse/RHEL-35759

commit b106bcf0f99ae0459f3c8c2f0af575ef9f5d9bde
Author: David Laight <David.Laight@ACULAB.COM>
Date:   Fri, 29 Dec 2023 20:56:03 +0000

    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>

Signed-off-by: Waiman Long <longman@redhat.com>
This commit is contained in:
Waiman Long 2024-05-10 10:22:28 -04:00
parent 7660c0fa1e
commit e4200201ea
1 changed files with 4 additions and 5 deletions

View File

@ -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)