
From: Manfred Spraul <manfred@colorfullife.com>

I found one tasklist corruption that might explain some (but not all) 
slab corruption messages with the taskstruct_cache:

de_thread calls list_del(&current->tasks), but current->tasks was never 
added to the task list. The structure contains stale values from the parent.

I've added the attached debug check, and it oopsed in de_thread.

Unfortunately I know that at least one report was with glibc-2.2.5 :-(



 25-akpm/fs/exec.c |    1 -
 1 files changed, 1 deletion(-)

diff -puN fs/exec.c~de_thread-fix fs/exec.c
--- 25/fs/exec.c~de_thread-fix	Fri Apr 25 14:42:02 2003
+++ 25-akpm/fs/exec.c	Fri Apr 25 14:42:02 2003
@@ -673,7 +673,6 @@ static inline int de_thread(struct task_
 			__ptrace_link(current, parent);
 		}
 
-		list_del(&current->tasks);
 		list_add_tail(&current->tasks, &init_task.tasks);
 		current->exit_signal = SIGCHLD;
 		state = leader->state;

_
