From f6a61d497081ef944cb278ca7b9fb60176fa53b4 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Mon, 5 Mar 2012 14:59:13 -0800 Subject: [PATCH] --- yaml --- r: 288237 b: refs/heads/master c: 57b59c4a1400fa6c34764eab2e35a8762dc05a09 h: refs/heads/master i: 288235: 2b277516b58f8639d621de7c0fe1638fea2578d8 v: v3 --- [refs] | 2 +- trunk/fs/exec.c | 14 ++------------ trunk/include/linux/sched.h | 1 - trunk/kernel/fork.c | 2 +- 4 files changed, 4 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index a3237d997cbd..24097e580f10 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d68b46fe16ad59b3a5f51ec73daaa5dc06753798 +refs/heads/master: 57b59c4a1400fa6c34764eab2e35a8762dc05a09 diff --git a/trunk/fs/exec.c b/trunk/fs/exec.c index dccdcec913e9..153dee14fe55 100644 --- a/trunk/fs/exec.c +++ b/trunk/fs/exec.c @@ -1926,19 +1926,9 @@ static int coredump_wait(int exit_code, struct core_state *core_state) core_waiters = zap_threads(tsk, mm, core_state, exit_code); up_write(&mm->mmap_sem); - if (unlikely(core_waiters < 0)) - goto fail; - - /* - * Make sure nobody is waiting for us to release the VM, - * otherwise we can deadlock when we wait on each other - */ - if (tsk->vfork_done) - complete_vfork_done(tsk); - - if (core_waiters) + if (core_waiters > 0) wait_for_completion(&core_state->startup); -fail: + return core_waiters; } diff --git a/trunk/include/linux/sched.h b/trunk/include/linux/sched.h index b6467711f12e..11fcafaf4ae4 100644 --- a/trunk/include/linux/sched.h +++ b/trunk/include/linux/sched.h @@ -2291,7 +2291,6 @@ extern int do_execve(const char *, const char __user * const __user *, const char __user * const __user *, struct pt_regs *); extern long do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long, int __user *, int __user *); -extern void complete_vfork_done(struct task_struct *tsk); struct task_struct *fork_idle(int); extern void set_task_comm(struct task_struct *tsk, char *from); diff --git a/trunk/kernel/fork.c b/trunk/kernel/fork.c index 892c534ce6e3..44b0e21af50e 100644 --- a/trunk/kernel/fork.c +++ b/trunk/kernel/fork.c @@ -668,7 +668,7 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode) return mm; } -void complete_vfork_done(struct task_struct *tsk) +static void complete_vfork_done(struct task_struct *tsk) { struct completion *vfork;