--- x/fs/exec.c.~1~ 2003-10-10 08:08:12.000000000 +0200 +++ x/fs/exec.c 2003-10-17 21:31:49.000000000 +0200 @@ -426,6 +426,13 @@ static int exec_mmap(void) struct mm_struct * mm, * old_mm; old_mm = current->mm; + if (old_mm && atomic_read(&old_mm->mm_users) == 1) { + mm_release(); + down_write(&old_mm->mmap_sem); + exit_mmap(old_mm); + up_write(&old_mm->mmap_sem); + return 0; + } mm = mm_alloc(); if (mm) {