This looks great, and I think should definitely go into 4.3. One question: why do you need all the cmpxchg in the abort/unlock functions? If we're in those functions, we already got the lock, so no other thread should be modifying the guard. Can't we just do a non-atomic assignment and then FUTEX_WAKE? Jason