From: Jeff Dike This patch saves and restores UML's idea of user mode across an interrupt. Without this, an interrupt arriving at the wrong time can cause UML to lose track of whether an interrupted handler is handing a userspace interrupt. From: Ingo Molnar Signed-off-by: Jeff Dike Signed-off-by: Andrew Morton --- 25-akpm/arch/um/kernel/skas/trap_user.c | 3 +++ 1 files changed, 3 insertions(+) diff -puN arch/um/kernel/skas/trap_user.c~uml-fix-a-signal-race arch/um/kernel/skas/trap_user.c --- 25/arch/um/kernel/skas/trap_user.c~uml-fix-a-signal-race Tue Sep 14 17:08:53 2004 +++ 25-akpm/arch/um/kernel/skas/trap_user.c Tue Sep 14 17:08:53 2004 @@ -19,8 +19,10 @@ void sig_handler_common_skas(int sig, vo struct skas_regs *r; struct signal_info *info; int save_errno = errno; + int save_user; r = &TASK_REGS(get_current())->skas; + save_user = r->is_user; r->is_user = 0; r->fault_addr = SC_FAULT_ADDR(sc); r->fault_type = SC_FAULT_TYPE(sc); @@ -33,6 +35,7 @@ void sig_handler_common_skas(int sig, vo (*info->handler)(sig, (union uml_pt_regs *) r); errno = save_errno; + r->is_user = save_user; } void user_signal(int sig, union uml_pt_regs *regs) _