Adjust page fault protection error check before considering it to be a vmalloc synchronization candidate. From: Jan Beulich --- 2.6.14/arch/i386/mm/fault.c 2005-10-28 02:02:08.000000000 +0200 +++ 2.6.14-i386-pagefault/arch/i386/mm/fault.c 2005-11-04 16:19:33.000000000 +0100 @@ -223,6 +223,8 @@ fastcall void do_invalid_op(struct pt_re * bit 0 == 0 means no page found, 1 means protection fault * bit 1 == 0 means read, 1 means write * bit 2 == 0 means kernel, 1 means user-mode + * bit 3 == 1 means use of reserved bit detected + * bit 4 == 1 means fault was an instruction fetch */ fastcall void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code) @@ -259,10 +261,10 @@ fastcall void __kprobes do_page_fault(st * * This verifies that the fault happens in kernel space * (error_code & 4) == 0, and that the fault was not a - * protection error (error_code & 1) == 0. + * protection error (error_code & 9) == 0. */ if (unlikely(address >= TASK_SIZE)) { - if (!(error_code & 5)) + if (!(error_code & 0xd)) goto vmalloc_fault; /* * Don't take the mm semaphore here. If we fixup a prefetch