From 2627beeb14ecfbbde34d6f3078c75019d5ac6d89 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Sun, 11 Nov 2007 19:13:43 -0800 Subject: [PATCH] --- yaml --- r: 73485 b: refs/heads/master c: 00ec99da43a7c2aed46c6595aa271b84bb1b1462 h: refs/heads/master i: 73483: a912461188dbb581208f0d19399051b4a0753ed7 v: v3 --- [refs] | 2 +- trunk/fs/exec.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index f529157df9ca..dbb3cb032228 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6e800af233e0bdf108efb7bd23c11ea6fa34cdeb +refs/heads/master: 00ec99da43a7c2aed46c6595aa271b84bb1b1462 diff --git a/trunk/fs/exec.c b/trunk/fs/exec.c index 2c942e2d14ea..4ccaaa4b13b2 100644 --- a/trunk/fs/exec.c +++ b/trunk/fs/exec.c @@ -1692,7 +1692,10 @@ int do_coredump(long signr, int exit_code, struct pt_regs * regs) if (!binfmt || !binfmt->core_dump) goto fail; down_write(&mm->mmap_sem); - if (!get_dumpable(mm)) { + /* + * If another thread got here first, or we are not dumpable, bail out. + */ + if (mm->core_waiters || !get_dumpable(mm)) { up_write(&mm->mmap_sem); goto fail; } @@ -1706,7 +1709,6 @@ int do_coredump(long signr, int exit_code, struct pt_regs * regs) flag = O_EXCL; /* Stop rewrite attacks */ current->fsuid = 0; /* Dump root private */ } - set_dumpable(mm, 0); retval = coredump_wait(exit_code); if (retval < 0)