On Wed, Jan 11, 2006 at 06:25:36PM +0100, Esben Nielsen wrote:> So how many locks do we have to worry about? Two.> One for locking the lock. One for locking various PI related data on the> task structure, as the pi_waiters list, blocked_on, pending_owner - and> also prio.> Therefore only lock->wait_lock and sometask->pi_lock will be locked at the> same time. And in that order. There is therefore no spinlock deadlocks.> And the code is simpler.

Ok, got a question. How do deal with the false reporting and handling ofa lock circularity window involving the handoff of task A's BKL to anothertask B ? Task A is blocked trying to get a mutex owned by task B, task Ais block B since it owns BKL which task B is contending on. It's not adeadlock since it's a hand off situation.

I didn't see any handling of this case in the code and I was wonderingif the traversal logic you wrote avoids this case as an inherent propertyand I missed that stuff ?