lkml.org 
[lkml]   [2004]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Do x86 NX and AMD prefetch check cause page fault infinite loop?
Ingo Molnar wrote:
> -#ifdef CONFIG_X86_PAE
> - {
> - pgd_t *pgd;
> - pmd_t *pmd;
> - pgd = init_mm.pgd + pgd_index(address);
> - if (pgd_present(*pgd)) {
> - pmd = pmd_offset(pgd, address);
> - if (pmd_val(*pmd) & _PAGE_NX)
> - printk(KERN_CRIT "kernel tried to access NX-protected page - exploit attempt? (uid: %d)\n", current->uid);
> - }
> - }
> -#endif
> + if (nx_enabled && (error_code & 16))
> + printk(KERN_CRIT "kernel tried to execute NX-protected page - exploit attempt? (uid: %d)\n", current->uid);

According to AMD's manual, bit 4 of error_code means the fault was due
to an instruction fetch. It doesn't imply that it's an NX-protected
page: it might be a page not present fault instead. (The manual
doesn't spell that out, it just says the bit is set when it's an
instruction fetch).

Just so you realise that the above code fragments aren't logically
equivalent.

-- Jamie
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:04    [from the cache]
©2003-2011 Jasper Spaans. Advertise on this site