Re: [PATCH] locking/qspinlock: Fix typo of lock word transition in the uncontended case

From: Will Deacon
Date: Mon Aug 09 2021 - 09:40:55 EST


On Thu, Jul 15, 2021 at 11:08:47AM +0800, Zenghui Yu wrote:
> If the queue head is the only one in the queue and nobody is concurrently
> setting PENDING bit, the uncontended transition should be n,0,0 -> 0,0,1.
>
> Fix the typo.
>
> Signed-off-by: Zenghui Yu <yuzenghui@xxxxxxxxxx>
> ---
> kernel/locking/qspinlock.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/locking/qspinlock.c b/kernel/locking/qspinlock.c
> index cbff6ba53d56..591835415698 100644
> --- a/kernel/locking/qspinlock.c
> +++ b/kernel/locking/qspinlock.c
> @@ -355,7 +355,7 @@ void queued_spin_lock_slowpath(struct qspinlock *lock, u32 val)
> * If we observe contention, there is a concurrent locker.
> *
> * Undo and queue; our setting of PENDING might have made the
> - * n,0,0 -> 0,0,0 transition fail and it will now be waiting
> + * n,0,0 -> 0,0,1 transition fail and it will now be waiting
> * on @next to become !NULL.
> */

I think this is an important typo fix as you're right that we don't
transition directly from having a waitqueue installed in the tail straight
to an unlocked state.

Acked-by: Will Deacon <will@xxxxxxxxxx>

Then again, I acked the patch introducing this comment so what do I know?

Will