Skip to contentSkip to conversation

ARM: spinlock: avoid exclusive accesses on unlock() path

PATCH New 马文健 2 participants 2 messages Aug 7, 2018 2 messages not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

马文健

author
#2 lore raw

PATCH 1/1 ARM: spinlock: avoid exclusive accesses on unlock() path

Hi
while one cpu is doing arch_spin_unlock,another cpu doing arch_spin_lock the first cpu's
lock->tickets.owner++;
may be over writed by the second's
strex %2, %1, [%3]\n
so the owner filed doesn't get increased.

But i'm not sure about this, may be there are something i have missed.

Thanks.

------------------ Original ------------------

#3 lore raw

PATCH 1/1 ARM: spinlock: avoid exclusive accesses on unlock() path

Quoted 6 lines · ???

while one cpu is doing arch_spin_unlock,another cpu doing arch_spin_lock the first cpu's
lock->tickets.owner++;
may be over writed by the second's
strex %2, %1, [%3]\n
so the owner filed doesn't get increased.

I don't see how this can happen. If the unlocker writes to the owner field in-between the locker's LDXR/STXR pair (which is the only way the harmful overwrite could occur as far as I can tell), then the STXR will fail and not update memory.

Are you actually seeing a problem here?

Will