This is a solution looking for a problem.
Normal futexes have no ordering guarantees at all. There is no
mechanism to prevent lock stealing from lower priority tasks. So why
should we care about the once a year case, where a sleepers priority
is modified ?
If you need ordering guarantees then use PI futexes.
The patch corrects a non issue and introduces lock order issues:
vs.
{
....
hb = queue_lock(&q);
There are more issues vs. pi futexes as well. The simple case of
futex_wait() vs. futex_adjust_waiters will just upset lockdep, but
there are real dealocks vs. unqueue_me_pi waiting.
Thanks,
tglx
--