Chris Wright wrote: >* zach@xxxxxxxxxx (zach@xxxxxxxxxx) wrote: > > >>This code is quite dead. Release_thread is always guaranteed that the mm has >>already been released, thus dead_task->mm will always be NULL. >> >>Signed-off-by: Zachary Amsden <zach@xxxxxxxxxx> >>Index: linux-2.6.13/arch/i386/kernel/process.c >>=================================================================== >>--- linux-2.6.13.orig/arch/i386/kernel/process.c 2005-08-15 10:46:18.000000000 -0700 >>+++ linux-2.6.13/arch/i386/kernel/process.c 2005-08-15 10:48:51.000000000 -0700 >>@@ -421,17 +421,7 @@ >> >> void release_thread(struct task_struct *dead_task) >> { >>- if (dead_task->mm) { >>- // temporary debugging check >>- if (dead_task->mm->context.size) { >>- printk("WARNING: dead process %8s still has LDT? <%p/%d>\n", >>- dead_task->comm, >>- dead_task->mm->context.ldt, >>- dead_task->mm->context.size); >>- BUG(); >>- } >>- } >>- >>+ BUG_ON(dead_task->mm); >> >> > >This BUG_ON() has different semantics than old dead one. Is there a >point? exit_mm() has already reset this to NULL, no? > > Yes, completely. This BUG() could be eliminated entirely, as trivial inspection shows. I can't fathom a single reason why it should still exist, but the presence of it in the first place made be wonder if there may be some erudite reason for it. Thus I raised the BUG to a higher power - obviously the LDT is gone if the MM is gone. Zach