ARM: spinlock: avoid exclusive accesses on unlock() path
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]
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 ------------------
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_lockthe 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