diff -u linux-2.4.21/arch/x86_64/mm/fault.c-WRAP32 linux-2.4.21/arch/x86_64/mm/fault.c
--- linux-2.4.21/arch/x86_64/mm/fault.c-WRAP32	2003-09-22 09:36:18.000000000 +0200
+++ linux-2.4.21/arch/x86_64/mm/fault.c	2003-09-22 09:38:05.000000000 +0200
@@ -240,6 +240,11 @@
 	if (in_interrupt() || !mm)
 		goto bad_area_nosemaphore;
 
+	/* Any code segment in LDT is compatibility mode. */
+	if ((regs->cs == __USER32_CS || (regs->cs & (1<<2))) &&
+		(address >> 32))
+		return;
+
 again:
 	down_read(&mm->mmap_sem);