Messages in this thread Patch in this message | | | Date | Sun, 09 Oct 2005 20:21:57 +0400 | From | Oleg Nesterov <> | Subject | [PATCH] coredump_wait() cleanup |
| |
This patch deletes pointless (please correct me if I am wrong) code from coredump_wait().
1. It does useless mm->core_waiters inc/dec under mm->mmap_sem, but any changes to ->core_waiters have no effect until we drop ->mmap_sem.
2. It calls yield() for absolutely unknown reason.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
--- 2.6.14-rc3/fs/exec.c~ 2005-09-21 21:08:33.000000000 +0400 +++ 2.6.14-rc3/fs/exec.c 2005-10-09 23:54:45.000000000 +0400 @@ -1422,19 +1422,16 @@ static void zap_threads (struct mm_struc static void coredump_wait(struct mm_struct *mm) { DECLARE_COMPLETION(startup_done); - - mm->core_waiters++; /* let other threads block */ - mm->core_startup_done = &startup_done; - - /* give other threads a chance to run: */ - yield(); - - zap_threads(mm); - if (--mm->core_waiters) { - up_write(&mm->mmap_sem); - wait_for_completion(&startup_done); - } else - up_write(&mm->mmap_sem); + int core_waiters; + + mm->core_startup_done = &startup_done; + + zap_threads(mm); + core_waiters = mm->core_waiters; + up_write(&mm->mmap_sem); + + if (core_waiters) + wait_for_completion(&startup_done); BUG_ON(mm->core_waiters); } - 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/
| |