Re: [PATCH] powerpc/qspinlock: Fix deadlock in MCS queue

From: Michael Ellerman
Date: Tue Aug 27 2024 - 23:52:46 EST


"Nysal Jan K.A." <nysal@xxxxxxxxxxxxx> writes:
> If an interrupt occurs in queued_spin_lock_slowpath() after we increment
> qnodesp->count and before node->lock is initialized, another CPU might
> see stale lock values in get_tail_qnode(). If the stale lock value happens
> to match the lock on that CPU, then we write to the "next" pointer of
> the wrong qnode. This causes a deadlock as the former CPU, once it becomes
> the head of the MCS queue, will spin indefinitely until it's "next" pointer
> is set by its successor in the queue. This results in lockups similar to
> the following.
...
>
> Thanks to Saket Kumar Bhaskar for help with recreating the issue
>
> Fixes: 84990b169557 ("powerpc/qspinlock: add mcs queueing for contended waiters")
> Cc: stable@xxxxxxxxxxxxxxx # v6.2+
> Reported-by: Geetika Moolchandani <geetika@xxxxxxxxxxxxx>
> Reported-by: Vaishnavi Bhat <vaish123@xxxxxxxxxx>
> Reported-by: Jijo Varghese <vargjijo@xxxxxxxxxx>

Do we have links for any of these reports?

cheers