From 7764b6ded24705e972415683b234cb720ea1861d Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Mon, 29 Dec 2003 23:46:31 -0800 Subject: [PATCH] Fix memleak on execve failure From: IWAMOTO Toshihiro I found linux-2.6.0-test11 leaks memory when execve fails. I've also checked the bitkeeper tree and the problem seems to be unchanged. The attached patch is a partial backout of bitkeeper rev. 1.87 of fs/exec.c. I guess the original change was a simple mistake. (free_arg_pages() is a NOP when CONFIG_MMU is defined). --- fs/exec.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'fs/exec.c') diff --git a/fs/exec.c b/fs/exec.c index 34c5697d1a3b..a0e769adec78 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -1085,6 +1085,7 @@ int do_execve(char * filename, struct linux_binprm bprm; struct file *file; int retval; + int i; sched_balance_exec(); @@ -1153,7 +1154,11 @@ int do_execve(char * filename, out: /* Something went wrong, return the inode and free the argument pages*/ - free_arg_pages(&bprm); + for (i = 0 ; i < MAX_ARG_PAGES ; i++) { + struct page * page = bprm.page[i]; + if (page) + __free_page(page); + } if (bprm.security) security_bprm_free(&bprm); -- cgit v1.2.3