This patch fixes possible memory leaks in the main() function of arch/um/os-Linux/main.c. Cc: jdike@addtoit.com Signed-off-by: WANG Cong <wangcong@zeuux.org> --- Index: linux-2.6/arch/um/os-Linux/main.c =================================================================== --- linux-2.6.orig/arch/um/os-Linux/main.c +++ linux-2.6/arch/um/os-Linux/main.c @@ -113,14 +113,10 @@ static void setup_env_path(void) extern void scan_elf_aux( char **envp); -int __init main(int argc, char **argv, char **envp) +static char** dup_argv(int argc, char **argv) { + int i; char **new_argv; - int ret, i, err; - - set_stklim(); - - setup_env_path(); new_argv = malloc((argc + 1) * sizeof(char *)); if (new_argv == NULL) { @@ -135,6 +131,28 @@ int __init main(int argc, char **argv, c } } new_argv[argc] = NULL; + return new_argv; +} + +static void free_argv(int argc, char **argv) +{ + int i; + for (i = 0; i < argc; i++) { + free(argv[i]); + } + free(argv); +} + +int __init main(int argc, char **argv, char **envp) +{ + char **new_argv; + int ret, i, err; + + set_stklim(); + + setup_env_path(); + + new_argv = dup_argv(argc, argv); /* * Allow these signals to bring down a UML if all other @@ -185,6 +203,7 @@ int __init main(int argc, char **argv, c perror("Failed to exec kernel"); ret = 1; } + free_argv(argc, new_argv); printf("\n"); return uml_exitcode; } --
| Andy Whitcroft | clam |
| Jon Smirl | Re: 463 kernel developers missing! |
| Trent Piepho | [PATCH] [POWERPC] Improve (in|out)_beXX() asm code |
| Linus Torvalds | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
git: | |
| Jarek Poplawski | Re: HTB accuracy for high speed |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | [GIT]: Networking |
| Natalie Protasevich | [BUG] New Kernel Bugs |
