• Will Deacon's avatar
    arm64: spinlock: fix ll/sc unlock on big-endian systems · c1d7cd22
    Will Deacon authored
    When unlocking a spinlock, we perform a read-modify-write on the owner
    ticket in order to increment it and store it back with release
    semantics.
    
    In the LL/SC case, we load the 16-bit ticket using a 32-bit load and
    therefore store back the wrong halfword on a big-endian system,
    corrupting the lock after the first unlock and killing the system dead.
    
    This patch fixes the unlock code to use 16-bit accessors consistently.
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    c1d7cd22
spinlock.h 6.9 KB