Commit 179e037f authored by Al Viro's avatar Al Viro

do_coredump(): make sure that descriptor table isn't shared

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent c3c073f8
...@@ -2066,6 +2066,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) ...@@ -2066,6 +2066,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
int retval = 0; int retval = 0;
int flag = 0; int flag = 0;
int ispipe; int ispipe;
struct files_struct *displaced;
bool need_nonrelative = false; bool need_nonrelative = false;
static atomic_t core_dump_count = ATOMIC_INIT(0); static atomic_t core_dump_count = ATOMIC_INIT(0);
struct coredump_params cprm = { struct coredump_params cprm = {
...@@ -2219,6 +2220,12 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) ...@@ -2219,6 +2220,12 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
goto close_fail; goto close_fail;
} }
/* get us an unshared descriptor table; almost always a no-op */
retval = unshare_files(&displaced);
if (retval)
goto close_fail;
if (displaced)
put_files_struct(displaced);
retval = binfmt->core_dump(&cprm); retval = binfmt->core_dump(&cprm);
if (retval) if (retval)
current->signal->group_exit_code |= 0x80; current->signal->group_exit_code |= 0x80;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment