Messages in this thread Patch in this message | | | From | WANG Cong <> | Subject | [Patch 2/9] fs/exec.c: fix resource leaks and wrong goto's | Date | Thu, 8 May 2008 21:52:27 +0800 |
| |
When ->load_binary() successed, free_arg_pages() should be called to clean the pages allocated by copy_strings_kernel() within it.
And also fixes some wrong goto pathes.
Signed-off-by: WANG Cong <wangcong@zeuux.org> Cc: Alexander Viro <viro@zeniv.linux.org.uk>
--- diff --git a/fs/exec.c b/fs/exec.c index aeaa979..b49ba41 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -1218,6 +1220,7 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) if (bprm->file) fput(bprm->file); bprm->file = NULL; + free_arg_pages(bprm); current->did_exec = 1; proc_exec_connector(current); return retval; @@ -1298,15 +1301,15 @@ int do_execve(char * filename, retval = security_bprm_alloc(bprm); if (retval) - goto out; + goto out_mm; retval = prepare_binprm(bprm); if (retval < 0) - goto out; + goto out_sec; retval = copy_strings_kernel(1, &bprm->filename, bprm); if (retval < 0) - goto out; + goto out_sec; bprm->exec = bprm->p; retval = copy_strings(bprm->envc, envp, bprm); @@ -1331,6 +1334,8 @@ int do_execve(char * filename, out: free_arg_pages(bprm); + +out_sec: if (bprm->security) security_bprm_free(bprm);
| |