On Wed, Jun 18, 2014 at 02:03:12PM +0200, Paolo Bonzini wrote:
> Il 17/06/2014 00:08, Waiman Long ha scritto:
> >>+void __pv_queue_unlock(struct qspinlock *lock)
> >>+{
> >>+   int val = atomic_read(&lock->val);
> >>+
> >>+   native_queue_unlock(lock);
> >>+
> >>+   if (val & _Q_LOCKED_SLOW)
> >>+           ___pv_kick_head(lock);
> >>+}
> >>+
> >
> >Again a race can happen here between the reading and writing of the lock
> >value. I can't think of a good way to do that without using cmpxchg.
> 
> Could you just use xchg on the locked byte?

I'll have to, indeed. This is racy.

Attachment: pgpRkkDP2BVX1.pgp
Description: PGP signature

Reply via email to