diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/coredump.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/coredump.c b/fs/coredump.c index 7dfb3b062e2..d52f6bd5ad8 100644 --- a/fs/coredump.c +++ b/fs/coredump.c @@ -525,6 +525,7 @@ void do_coredump(siginfo_t *siginfo) if (ispipe) { int dump_count; char **helper_argv; + struct subprocess_info *sub_info; if (ispipe < 0) { printk(KERN_WARNING "format_corename failed\n"); @@ -571,9 +572,14 @@ void do_coredump(siginfo_t *siginfo) goto fail_dropcount; } - retval = call_usermodehelper_fns(helper_argv[0], helper_argv, - NULL, UMH_WAIT_EXEC, umh_pipe_setup, - NULL, &cprm); + retval = -ENOMEM; + sub_info = call_usermodehelper_setup(helper_argv[0], + helper_argv, NULL, GFP_KERNEL, + umh_pipe_setup, NULL, &cprm); + if (sub_info) + retval = call_usermodehelper_exec(sub_info, + UMH_WAIT_EXEC); + argv_free(helper_argv); if (retval) { printk(KERN_INFO "Core dump to %s pipe failed\n", |