From 099585c50396490bf0f9f91dedbf877cfee1529b Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Sun, 30 Oct 2005 15:02:54 -0800 Subject: [PATCH] --- yaml --- r: 11862 b: refs/heads/master c: 1291cf4163d21f1b4999d697cbf68d38e7151c28 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/exec.c | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 23e4537a938a..7dc93e724ff3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f7232056bff5fe2d3bfeab35252a66ebaeb5bbde +refs/heads/master: 1291cf4163d21f1b4999d697cbf68d38e7151c28 diff --git a/trunk/fs/exec.c b/trunk/fs/exec.c index 6d9521636aaa..10d493fea7ce 100644 --- a/trunk/fs/exec.c +++ b/trunk/fs/exec.c @@ -1460,11 +1460,21 @@ int do_coredump(long signr, int exit_code, struct pt_regs * regs) current->fsuid = 0; /* Dump root private */ } mm->dumpable = 0; - init_completion(&mm->core_done); + + retval = -EAGAIN; spin_lock_irq(¤t->sighand->siglock); - current->signal->flags = SIGNAL_GROUP_EXIT; - current->signal->group_exit_code = exit_code; + if (!(current->signal->flags & SIGNAL_GROUP_EXIT)) { + current->signal->flags = SIGNAL_GROUP_EXIT; + current->signal->group_exit_code = exit_code; + retval = 0; + } spin_unlock_irq(¤t->sighand->siglock); + if (retval) { + up_write(&mm->mmap_sem); + goto fail; + } + + init_completion(&mm->core_done); coredump_wait(mm); /*