aboutsummaryrefslogtreecommitdiffstats
path: root/fs/exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/exec.c')
-rw-r--r--fs/exec.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/fs/exec.c b/fs/exec.c
index 6450157062ea..cbd183daaad4 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1762,14 +1762,27 @@ int do_coredump(long signr, int exit_code, struct pt_regs * regs)
1762 goto fail_unlock; 1762 goto fail_unlock;
1763 1763
1764 if (ispipe) { 1764 if (ispipe) {
1765 core_limit = RLIM_INFINITY;
1766 helper_argv = argv_split(GFP_KERNEL, corename+1, &helper_argc); 1765 helper_argv = argv_split(GFP_KERNEL, corename+1, &helper_argc);
1767 /* Terminate the string before the first option */ 1766 /* Terminate the string before the first option */
1768 delimit = strchr(corename, ' '); 1767 delimit = strchr(corename, ' ');
1769 if (delimit) 1768 if (delimit)
1770 *delimit = '\0'; 1769 *delimit = '\0';
1770 delimit = strrchr(helper_argv[0], '/');
1771 if (delimit)
1772 delimit++;
1773 else
1774 delimit = helper_argv[0];
1775 if (!strcmp(delimit, current->comm)) {
1776 printk(KERN_NOTICE "Recursive core dump detected, "
1777 "aborting\n");
1778 goto fail_unlock;
1779 }
1780
1781 core_limit = RLIM_INFINITY;
1782
1771 /* SIGPIPE can happen, but it's just never processed */ 1783 /* SIGPIPE can happen, but it's just never processed */
1772 if(call_usermodehelper_pipe(corename+1, helper_argv, NULL, &file)) { 1784 if (call_usermodehelper_pipe(corename+1, helper_argv, NULL,
1785 &file)) {
1773 printk(KERN_INFO "Core dump to %s pipe failed\n", 1786 printk(KERN_INFO "Core dump to %s pipe failed\n",
1774 corename); 1787 corename);
1775 goto fail_unlock; 1788 goto fail_unlock;