From: IWAMOTO Toshihiro <iwamoto@valinux.co.jp>
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).
struct linux_binprm bprm;
struct file *file;
int retval;
+ int i;
sched_balance_exec();
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);