Re: [PATCH v3 1/6] rtmutex: Deboost before waking up the top waiter

From: Thomas Gleixner
Date: Mon Apr 18 2016 - 04:25:13 EST


On Thu, 14 Apr 2016, Xunlei Pang wrote:
> We should deboost before waking the high-prio task such that
> we don't run two tasks with the 'same' priority.

No. This is fundamentaly broken.

T1 (prio 0) lock(X)

--> preemption

T2 (prio 10) lock(X)
boost(T1)
schedule()

T1 (prio 10) unlock(X)
deboost()
(prio 0)

--> preemption

T3 (prio 5) ....

Classic priority inversion enabled by a mechanism to avoid it. Brilliant
stuff.

Thanks,

tglx