| Date | Mon, 29 May 2006 23:27:27 +0200 | From | Ingo Molnar <> | Subject | [patch 54/61] lock validator: special locking: mmap_sem |
| |
From: Ingo Molnar <mingo@elte.hu>
teach special (recursive) locking code to the lock validator. Has no effect on non-lockdep kernels.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> --- kernel/exit.c | 2 +- kernel/fork.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-)
Index: linux/kernel/exit.c =================================================================== --- linux.orig/kernel/exit.c +++ linux/kernel/exit.c @@ -582,7 +582,7 @@ static void exit_mm(struct task_struct * /* more a memory barrier than a real lock */ task_lock(tsk); tsk->mm = NULL; - up_read(&mm->mmap_sem); + up_read_non_nested(&mm->mmap_sem); enter_lazy_tlb(mm, current); task_unlock(tsk); mmput(mm); Index: linux/kernel/fork.c =================================================================== --- linux.orig/kernel/fork.c +++ linux/kernel/fork.c @@ -196,7 +196,10 @@ static inline int dup_mmap(struct mm_str down_write(&oldmm->mmap_sem); flush_cache_mm(oldmm); - down_write(&mm->mmap_sem); + /* + * Not linked in yet - no deadlock potential: + */ + down_write_nested(&mm->mmap_sem, 1); mm->locked_vm = 0; mm->mmap = NULL; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|