diff options
author | Kees Cook <kees.cook@canonical.com> | 2009-11-13 18:28:17 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-11-16 16:44:59 -0500 |
commit | 4b0f3b81eb33ef18283aa71440cccfede1753ae0 (patch) | |
tree | 024e05ffc845d0942dddeb8f0b760815ab0b3373 /arch/x86/mm/setup_nx.c | |
parent | 4763ed4d45522b876c97e1f7f4b659d211f75571 (diff) |
x86, mm: Report state of NX protections during boot
It is possible for x86_64 systems to lack the NX bit either due to the
hardware lacking support or the BIOS having turned off the CPU capability,
so NX status should be reported. Additionally, anyone booting NX-capable
CPUs in 32bit mode without PAE will lack NX functionality, so this change
provides feedback for that case as well.
Signed-off-by: Kees Cook <kees.cook@canonical.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
LKML-Reference: <1258154897-6770-6-git-send-email-hpa@zytor.com>
Diffstat (limited to 'arch/x86/mm/setup_nx.c')
-rw-r--r-- | arch/x86/mm/setup_nx.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/x86/mm/setup_nx.c b/arch/x86/mm/setup_nx.c index 355818b087b5..a3250aa34086 100644 --- a/arch/x86/mm/setup_nx.c +++ b/arch/x86/mm/setup_nx.c | |||
@@ -36,3 +36,25 @@ void __cpuinit x86_configure_nx(void) | |||
36 | else | 36 | else |
37 | __supported_pte_mask &= ~_PAGE_NX; | 37 | __supported_pte_mask &= ~_PAGE_NX; |
38 | } | 38 | } |
39 | |||
40 | void __init x86_report_nx(void) | ||
41 | { | ||
42 | if (!cpu_has_nx) { | ||
43 | printk(KERN_NOTICE "Notice: NX (Execute Disable) protection " | ||
44 | "missing in CPU or disabled in BIOS!\n"); | ||
45 | } else { | ||
46 | #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) | ||
47 | if (disable_nx) { | ||
48 | printk(KERN_INFO "NX (Execute Disable) protection: " | ||
49 | "disabled by kernel command line option\n"); | ||
50 | } else { | ||
51 | printk(KERN_INFO "NX (Execute Disable) protection: " | ||
52 | "active\n"); | ||
53 | } | ||
54 | #else | ||
55 | /* 32bit non-PAE kernel, NX cannot be used */ | ||
56 | printk(KERN_NOTICE "Notice: NX (Execute Disable) protection " | ||
57 | "cannot be enabled: non-PAE kernel!\n"); | ||
58 | #endif | ||
59 | } | ||
60 | } | ||