How about the following patch?
--- linux-2.6.5-rc2-mm1/init/main.c 21 Mar 2004 17:02:18 -0000 1.1.1.1
+++ linux-2.6.5-rc2-mm1/init/main.c 21 Mar 2004 20:54:19 -0000
@@ -586,8 +586,8 @@ static int free_initmem_on_exec_helper(v
char c;
sys_close(fd[1]);
- sys_read(fd[0], &c, 1);
- free_initmem();
+ if (sys_read(fd[0], &c, 1) > 0)
+ free_initmem();
return 0;
}
@@ -596,7 +596,7 @@ static void free_initmem_on_exec(void)
int fd[2];
do_pipe(fd);
- kernel_thread(free_initmem_on_exec_helper, &fd, SIGCHLD);
+ kernel_thread(free_initmem_on_exec_helper, &fd, SIGCHLD);
sys_dup2(fd[1], 255); /* to get it out of the way */
sys_close(fd[0]);
@@ -643,6 +643,7 @@ static int init(void * unused)
run_init_process("/init");
prepare_namespace();
+ free_initmem();