• Anton Blanchard's avatar
    [PATCH] powerpc: use lwsync in atomics, bitops, lock functions · 144b9c13
    Anton Blanchard authored
    eieio is only a store - store ordering. When used to order an unlock
    operation loads may leak out of the critical region. This is potentially
    buggy, one example is if a user wants to atomically read a couple of
    values.
    
    We can solve this with an lwsync which orders everything except store - load.
    
    I removed the (now unused) EIEIO_ON_SMP macros and the c versions
    isync_on_smp and eieio_on_smp now we dont use them. I also removed some
    old comments that were used to identify inline spinlocks in assembly,
    they dont make sense now our locks are out of line.
    
    Another interesting thing was that read_unlock was using an eieio even
    though the rest of the spinlock code had already been converted to
    use lwsync.
    Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    144b9c13
atomic.h 7.92 KB