> On Apr 28, 2020, at 10:07 AM, Waiman Long <long...@redhat.com> wrote:
> 
> Trylock is handled differently from lockdep's perspective as trylock can 
> failed. When trylock succeeds, the critical section is executed. As long as 
> it doesn't try to acquire another lock in the circular chain, the execution 
> will finish at some point and release the lock. On the other hand, if another 
> task has already held all those locks, the trylock will fail and held locks 
> should be released. Again, no deadlock will happen.

Ok, I can see that in validate_chain() especially mentioned,

“Trylock needs to maintain the stack of held locks, but it does not add new 
dependencies, because trylock can be done in any order.”

So, I agree this trylock trick could really work. Especially, I don’t know any 
other better way to fix this.

Reply via email to