[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH][2.6-mm] Fix 4G/4G X11/vm86 oops
The 4G/4G page fault handling path doesn't appear to handle faults
happening whilst in vm86. The regs->xcs != __USER_CS so it confused the in
kernel test.
However i'm still debugging the X11 triple fault in test9-mm3
Unable to handle kernel paging request at virtual address 00002000
printing eip:
00007341
*pde = 00000000
Oops: 0004 [#1]
SMP DEBUG_PAGEALLOC
CPU: 0
EIP: c000:[<00007341>] Not tainted VLI
EFLAGS: 00033246
EIP is at 0x7341
eax: 32454256 ebx: 00000000 ecx: 00000000 edx: 00000000
esi: 00000000 edi: 00002000 ebp: 00000fd6 esp: 087bbf24
ds: 0000 es: 0000 ss: 0068
Process X (pid: 939, threadinfo=087ba000 task=0891c690)
Stack: 00000fcb 00000100 00000000 0000c000 00000000 00000000 00000000 00000000
00000005 ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
Call Trace:
Index: linux-2.6.0-test9-mm3/arch/i386/mm/fault.c
===================================================================
RCS file: /build/cvsroot/linux-2.6.0-test9-mm3/arch/i386/mm/fault.c,v
retrieving revision 1.1.1.1
diff -u -p -B -r1.1.1.1 fault.c
--- linux-2.6.0-test9-mm3/arch/i386/mm/fault.c 13 Nov 2003 08:07:17 -0000 1.1.1.1
+++ linux-2.6.0-test9-mm3/arch/i386/mm/fault.c 15 Nov 2003 19:08:34 -0000
@@ -264,7 +264,9 @@ asmlinkage void do_page_fault(struct pt_
if (error_code & 3)
goto bad_area_nosemaphore;
- goto vmalloc_fault;
+ /* If it's vm86 fall through */
+ if (!(error_code & 4))
+ goto vmalloc_fault;
}
#else
if (unlikely(address >= TASK_SIZE)) {
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>