From: Pavel Emelianov This causes constructions like down_write(&mm1->mmap_sem); if (down_write_trylock(&mm2->mmap_sem)) { ... up_write(&mm2->mmap_sem); } up_write(&mm1->mmap_sem); generate a lockdep warning about circular locking dependence. Call rwsem_acquire() with trylock set to 1. Cc: Ingo Molnar Cc: Arjan van de Ven Cc: Peter Zijlstra Signed-off-by: Andrew Morton --- kernel/rwsem.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN kernel/rwsem.c~lockdep-treats-down_write_trylock-like-regular-down_write kernel/rwsem.c --- a/kernel/rwsem.c~lockdep-treats-down_write_trylock-like-regular-down_write +++ a/kernel/rwsem.c @@ -60,7 +60,7 @@ int down_write_trylock(struct rw_semapho int ret = __down_write_trylock(sem); if (ret == 1) - rwsem_acquire(&sem->dep_map, 0, 0, _RET_IP_); + rwsem_acquire(&sem->dep_map, 0, 1, _RET_IP_); return ret; } _