Commit 217f155e9fc68bf2a6c58a7b47e0d1ce68d78818
Committed by
H. Peter Anvin
1 parent
fc8d782677
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
x86/ftrace: Use __pa_symbol instead of __pa on C visible symbols
Instead of using __pa which is meant to be a general function for converting virtual addresses to physical addresses we can use __pa_symbol which is the preferred way of decoding kernel text virtual addresses to physical addresses. In this case we are not directly converting C visible symbols however if we know that the instruction pointer is somewhere between _text and _etext we know that we are going to be translating an address form the kernel text space. Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Link: http://lkml.kernel.org/r/20121116215718.8521.24026.stgit@ahduyck-cp1.jf.intel.com Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Showing 1 changed file with 2 additions and 2 deletions Side-by-side Diff
arch/x86/kernel/ftrace.c
... | ... | @@ -89,7 +89,7 @@ |
89 | 89 | * kernel identity mapping to modify code. |
90 | 90 | */ |
91 | 91 | if (within(ip, (unsigned long)_text, (unsigned long)_etext)) |
92 | - ip = (unsigned long)__va(__pa(ip)); | |
92 | + ip = (unsigned long)__va(__pa_symbol(ip)); | |
93 | 93 | |
94 | 94 | return probe_kernel_write((void *)ip, new_code, MCOUNT_INSN_SIZE); |
95 | 95 | } |
... | ... | @@ -279,7 +279,7 @@ |
279 | 279 | * kernel identity mapping to modify code. |
280 | 280 | */ |
281 | 281 | if (within(ip, (unsigned long)_text, (unsigned long)_etext)) |
282 | - ip = (unsigned long)__va(__pa(ip)); | |
282 | + ip = (unsigned long)__va(__pa_symbol(ip)); | |
283 | 283 | |
284 | 284 | return probe_kernel_write((void *)ip, val, size); |
285 | 285 | } |