summaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/ftrace.c
diff options
context:
space:
mode:
authorLeonid Yegoshin2013-12-16 13:06:55 +0100
committerRalf Baechle2014-03-26 23:09:18 +0100
commit6ebda44f366478d1eea180d93154e7d97b591f50 (patch)
tree88a32637a7ad46a690692a3603b369c4f9485515 /arch/mips/kernel/ftrace.c
parentMIPS: asm: r4kcache: Add EVA cache flushing functions (diff)
downloadkernel-qcow2-linux-6ebda44f366478d1eea180d93154e7d97b591f50.tar.gz
kernel-qcow2-linux-6ebda44f366478d1eea180d93154e7d97b591f50.tar.xz
kernel-qcow2-linux-6ebda44f366478d1eea180d93154e7d97b591f50.zip
MIPS: kernel: {ftrace,kgdb}: Set correct address limit for cache flushes
When flushing the icache, make sure the address limit is correct so the appropriate 'cache' instruction will be used. This has no impact on cores operating in non-eva mode. However, when EVA is enabled, we ensure that 'cache' will be used instead of 'cachee'. Signed-off-by: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Diffstat (limited to 'arch/mips/kernel/ftrace.c')
-rw-r--r--arch/mips/kernel/ftrace.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/mips/kernel/ftrace.c b/arch/mips/kernel/ftrace.c
index 185ba258361b..ddcc3500248d 100644
--- a/arch/mips/kernel/ftrace.c
+++ b/arch/mips/kernel/ftrace.c
@@ -90,6 +90,7 @@ static inline void ftrace_dyn_arch_init_insns(void)
static int ftrace_modify_code(unsigned long ip, unsigned int new_code)
{
int faulted;
+ mm_segment_t old_fs;
/* *(unsigned int *)ip = new_code; */
safe_store_code(new_code, ip, faulted);
@@ -97,7 +98,10 @@ static int ftrace_modify_code(unsigned long ip, unsigned int new_code)
if (unlikely(faulted))
return -EFAULT;
+ old_fs = get_fs();
+ set_fs(get_ds());
flush_icache_range(ip, ip + 8);
+ set_fs(old_fs);
return 0;
}