Strengthen the clh_lock_acquire to use release on the atomic_exchange that makes the node public. Otherwise (on ARM & RISCV), the store to the node value which sets its state to CLHState_Pending can become visible some time after the node is visible. In that window of time, the next thread which attempts to acquire the lock will still see the old state (CLHState_Granted) and enters the critical section, leading to a mutual exclusion violation. Signed-off-by: jonas <s9joober@gmail.com> |
||
|---|---|---|
| .. | ||
| ipi.h | ||
| lock.h | ||