aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/cacheflush.h
diff options
context:
space:
mode:
authorSuresh Siddha <suresh.b.siddha@intel.com>2009-10-28 22:46:56 -0400
committerIngo Molnar <mingo@elte.hu>2009-11-02 11:16:35 -0500
commit502f660466ba7a66711ffdf414b1f7f1131dcbf7 (patch)
tree9b5ac4309f392855108365d3d17406ce3199d2eb /arch/x86/include/asm/cacheflush.h
parent883242dd0e5faaba041528a9a99f483f2a656c83 (diff)
x86, cpa: Fix kernel text RO checks in static_protection()
Steven Rostedt reported that we are unconditionally making the kernel text mapping as read-only. i.e., if someone does cpa() to the kernel text area for setting/clearing any page table attribute, we unconditionally clear the read-write attribute for the kernel text mapping that is set at compile time. We should delay (to forbid the write attribute) and enforce only after the kernel has mapped the text as read-only. Reported-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Acked-by: Steven Rostedt <rostedt@goodmis.org> Tested-by: Steven Rostedt <rostedt@goodmis.org> LKML-Reference: <20091029024820.996634347@sbs-t61.sc.intel.com> [ marked kernel_set_to_readonly as __read_mostly ] Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include/asm/cacheflush.h')
-rw-r--r--arch/x86/include/asm/cacheflush.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/include/asm/cacheflush.h b/arch/x86/include/asm/cacheflush.h
index b54f6afe7ec4..eebb2cd2b9bf 100644
--- a/arch/x86/include/asm/cacheflush.h
+++ b/arch/x86/include/asm/cacheflush.h
@@ -176,6 +176,7 @@ void clflush_cache_range(void *addr, unsigned int size);
176#ifdef CONFIG_DEBUG_RODATA 176#ifdef CONFIG_DEBUG_RODATA
177void mark_rodata_ro(void); 177void mark_rodata_ro(void);
178extern const int rodata_test_data; 178extern const int rodata_test_data;
179extern int kernel_set_to_readonly;
179void set_kernel_text_rw(void); 180void set_kernel_text_rw(void);
180void set_kernel_text_ro(void); 181void set_kernel_text_ro(void);
181#else 182#else