All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] NX protection for kernel data : fix 32 bits S3 suspend
@ 2011-01-31 23:03 matthieu castet
  2011-02-01  8:02 ` Ingo Molnar
  0 siblings, 1 reply; 24+ messages in thread
From: matthieu castet @ 2011-01-31 23:03 UTC (permalink / raw)
  To: Linux Kernel list
  Cc: Ingo Molnar, linux-security-module, Matthias Hopf, rjw,
	Andrew Morton, H. Peter Anvin

[-- Attachment #1: Type: text/plain, Size: 141 bytes --]

I think it should be applied before 2.6.38 release, because without
this patch S3 suspend doesn't work on x86_32 with CONFIG_DEBUG_RODATA.



[-- Attachment #2: 0001-NX-protection-for-kernel-data-fix-32-bits-S3-suspend.patch --]
[-- Type: text/x-diff, Size: 1911 bytes --]

>From a8d56e665c9b26c953f355b6e8eeeecafa07efdb Mon Sep 17 00:00:00 2001
From: Matthieu CASTET <castet.matthieu@free.fr>
Date: Thu, 27 Jan 2011 21:36:07 +0100
Subject: [PATCH] NX protection for kernel data : fix 32 bits S3 suspend

32 bits wakeup realmode trampoline enable paging, while still
in low memory.

We should make this memory !NX in order it works.

Signed-off-by: Matthieu CASTET <castet.matthieu@free.fr>
Tested-by: Matthias Hopf <mhopf@suse.de>
---
 arch/x86/mm/init_32.c  |    8 ++++++++
 arch/x86/mm/pageattr.c |    7 +++++++
 2 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index c821074..0048738 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -227,6 +227,14 @@ page_table_range_init(unsigned long start, unsigned long end, pgd_t *pgd_base)
 
 static inline int is_kernel_text(unsigned long addr)
 {
+#if defined(CONFIG_X86_32) && defined(CONFIG_ACPI_SLEEP)
+	/*
+	 * We need to make the wakeup trampoline in first 1MB !NX
+	 */
+	if (addr >= PAGE_OFFSET && addr <= (PAGE_OFFSET + (1<<20)))
+		return 1;
+#endif
+
 	if (addr >= (unsigned long)_text && addr <= (unsigned long)__init_end)
 		return 1;
 	return 0;
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index d343b3c..f1d6cf5 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -265,6 +265,13 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
 	if (pcibios_enabled && within(pfn, BIOS_BEGIN >> PAGE_SHIFT, BIOS_END >> PAGE_SHIFT))
 		pgprot_val(forbidden) |= _PAGE_NX;
 #endif
+	/*
+	 * We need to make the wakeup trampoline in first 1MB !NX
+	 */
+#if defined(CONFIG_X86_32) && defined(CONFIG_ACPI_SLEEP)
+	if (within(address, PAGE_OFFSET, PAGE_OFFSET + (1<<20)))
+		pgprot_val(forbidden) |= _PAGE_NX;
+#endif
 
 	/*
 	 * The kernel text needs to be executable for obvious reasons
-- 
1.7.2.3


^ permalink raw reply related	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2011-02-28  6:11 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-31 23:03 [PATCH] NX protection for kernel data : fix 32 bits S3 suspend matthieu castet
2011-02-01  8:02 ` Ingo Molnar
2011-02-01 13:25   ` castet.matthieu
2011-02-01 16:30     ` H. Peter Anvin
2011-02-02  6:26     ` Ingo Molnar
2011-02-03 22:11       ` H. Peter Anvin
2011-02-05  1:12       ` H. Peter Anvin
2011-02-05 16:46         ` castet.matthieu
2011-02-06 23:41           ` H. Peter Anvin
2011-02-07  7:40             ` Ingo Molnar
2011-02-07 19:59             ` castet.matthieu
2011-02-07 20:04               ` H. Peter Anvin
2011-02-12 16:10                 ` matthieu castet
2011-02-14 20:55                   ` H. Peter Anvin
2011-02-26  3:58                   ` Pavel Machek
2011-02-07 20:07               ` H. Peter Anvin
2011-02-14 21:19               ` H. Peter Anvin
2011-02-14 22:50                 ` Rafael J. Wysocki
2011-02-07  3:56           ` H. Peter Anvin
2011-02-07  5:16           ` H. Peter Anvin
2011-02-07  9:24             ` [tip:x86/urgent] x86, nx: Mark the ACPI resume trampoline code as +x tip-bot for H. Peter Anvin
2011-02-07 14:50               ` [tip:x86/urgent] x86, nx: Mark the ACPI resume trampoline code as +x - fixed Marc Koschewski
2011-02-07 15:04                 ` Ingo Molnar
2011-02-07 13:16             ` [PATCH] NX protection for kernel data : fix 32 bits S3 suspend Matthias Hopf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.