aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/mm/pageattr.c
diff options
context:
space:
mode:
authorSuresh Siddha <suresh.b.siddha@intel.com>2009-10-28 22:46:57 -0400
committerIngo Molnar <mingo@elte.hu>2009-11-02 11:16:36 -0500
commit55ca3cc1746335bb6ef1d3894ddb6d0c729b3518 (patch)
tree1678b567a1d4ebb92c51abc0234334023879c749 /arch/x86/mm/pageattr.c
parent502f660466ba7a66711ffdf414b1f7f1131dcbf7 (diff)
x86_64, ftrace: Make ftrace use kernel identity mapping to modify code
On x86_64, kernel text mappings are mapped read-only with CONFIG_DEBUG_RODATA. So use the kernel identity mapping instead of the kernel text mapping to modify the kernel text. 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: <20091029024821.080941108@sbs-t61.sc.intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/mm/pageattr.c')
-rw-r--r--arch/x86/mm/pageattr.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index 8d1e8d95ea45..09a140ca7be8 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -279,8 +279,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
279 __pa((unsigned long)__end_rodata) >> PAGE_SHIFT)) 279 __pa((unsigned long)__end_rodata) >> PAGE_SHIFT))
280 pgprot_val(forbidden) |= _PAGE_RW; 280 pgprot_val(forbidden) |= _PAGE_RW;
281 281
282#if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA) && \ 282#if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
283 !defined(CONFIG_DYNAMIC_FTRACE)
284 /* 283 /*
285 * Once the kernel maps the text as RO (kernel_set_to_readonly is set), 284 * Once the kernel maps the text as RO (kernel_set_to_readonly is set),
286 * kernel text mappings for the large page aligned text, rodata sections 285 * kernel text mappings for the large page aligned text, rodata sections