From: Zwane Mwaikambo It looks like when we do the WP test and trigger a (write) protection fault, the 4G/4G page fault handling path doesn't expect this kind of fault and instead results in recursive fault handling (or so it appears). arch/i386/mm/fault.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletion(-) diff -puN arch/i386/mm/fault.c~4g4g-wp-test-fix arch/i386/mm/fault.c --- 25/arch/i386/mm/fault.c~4g4g-wp-test-fix 2003-10-16 00:31:51.000000000 -0700 +++ 25-akpm/arch/i386/mm/fault.c 2003-10-16 00:31:51.000000000 -0700 @@ -260,8 +260,12 @@ asmlinkage void do_page_fault(struct pt_ /* * On 4/4 all kernels faults are either bugs, vmalloc or prefetch */ - if (unlikely((regs->xcs & 3) == 0)) + if (unlikely((regs->xcs & 3) == 0)) { + if (error_code & 3) + goto bad_area_nosemaphore; + goto vmalloc_fault; + } #else if (unlikely(address >= TASK_SIZE)) { if (!(error_code & 5)) _