spin_lock implicit/explicit memory barrier

From: Manfred Spraul
Date: Tue Aug 09 2016 - 14:52:40 EST


Hi Benjamin, Hi Michael,

regarding commit 51d7d5205d33 ("powerpc: Add smp_mb() to arch_spin_is_locked()"):

For the ipc/sem code, I would like to replace the spin_is_locked() with a smp_load_acquire(), see:

http://git.cmpxchg.org/cgit.cgi/linux-mmots.git/tree/ipc/sem.c#n367

http://www.ozlabs.org/~akpm/mmots/broken-out/ipc-semc-fix-complex_count-vs-simple-op-race.patch

To my understanding, I must now add a smp_mb(), otherwise it would be broken on PowerPC:

The approach that the memory barrier is added into spin_is_locked() doesn't work because the code doesn't use spin_is_locked().

Correct?

--

Manfred