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);