diff -urNp linux-2.4.21/arch/i386/mm/fault.c linux-2.4.21.SUSE/arch/i386/mm/fault.c --- linux-2.4.21/arch/i386/mm/fault.c 2004-01-26 14:23:33.000000000 +0100 +++ linux-2.4.21.SUSE/arch/i386/mm/fault.c 2004-01-26 14:23:54.000000000 +0100 @@ -380,7 +380,8 @@ bad_area_nosemaphore: return; tsk->thread.cr2 = address; - tsk->thread.error_code = error_code; + /* Kernel addresses are always protection faults */ + tsk->thread.error_code = error_code | (address >= TASK_SIZE); tsk->thread.trap_no = 14; info.si_signo = SIGSEGV; info.si_errno = 0;