Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetoot...
[firefly-linux-kernel-4.4.55.git] / arch / mips / kernel / ftrace.c
index 374ed74cd516d91e27638ce12e4c3c731a191ef4..60e7e5e45af15135375a0183cca9759ff06442c0 100644 (file)
@@ -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;
 }
@@ -197,7 +201,7 @@ int ftrace_update_ftrace_func(ftrace_func_t func)
        return ftrace_modify_code(FTRACE_CALL_IP, new);
 }
 
-int __init ftrace_dyn_arch_init(void *data)
+int __init ftrace_dyn_arch_init(void)
 {
        /* Encode the instructions when booting */
        ftrace_dyn_arch_init_insns();
@@ -205,9 +209,6 @@ int __init ftrace_dyn_arch_init(void *data)
        /* Remove "b ftrace_stub" to ensure ftrace_caller() is executed */
        ftrace_modify_code(MCOUNT_ADDR, INSN_NOP);
 
-       /* The return code is retured via data */
-       *(unsigned long *)data = 0;
-
        return 0;
 }
 #endif /* CONFIG_DYNAMIC_FTRACE */