From: Jeff Dike Cc: user-mode-linux-devel@lists.sourceforge.net The following stress-test crashed the 2.6 kernel - this was fixed in 2.6.4-1um release - this is the first part (historically speaking) of the fix: $ while /bin/true ; do /bin/true ; done In fact, a similar stress-test panics 2.4 - you only need to run: cat /dev/urandom while running the above test. So I'm backporting this fix, which was thought as not needed since on 2.4 the simpler stress-test does not panic the kernel. Quoting from Jeff Dike: "This turned out to be slightly subtle. It was exposed by the longjmp -> siglongjmp change. New processes were created with signals enabled, so siglongjmp to a new process context re-enabled signals in the middle of the context switch. Try the patch below - it seems to fix things for me. Jeff" Note: this is not enough - but it is probably needed, so I'm backporting it anyway. Signed-off-by: Paolo 'Blaisorblade' Giarrusso --- um-linux-2.4.27-paolo/arch/um/kernel/skas/process_kern.c | 1 + 1 files changed, 1 insertion(+) diff -puN arch/um/kernel/skas/process_kern.c~uml-sched-fix-1 arch/um/kernel/skas/process_kern.c --- um-linux-2.4.27/arch/um/kernel/skas/process_kern.c~uml-sched-fix-1 2005-04-15 11:13:10.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/kernel/skas/process_kern.c 2005-04-15 11:13:10.000000000 +0200 @@ -75,6 +75,7 @@ void new_thread_handler(int sig) void new_thread_proc(void *stack, void (*handler)(int sig)) { + local_irq_disable(); init_new_thread_stack(stack, handler); os_usr1_process(os_getpid()); } _