livepatch: Use the default ftrace_ops instead of REGS when ARGS is available
[linux-2.6-microblaze.git] / kernel / livepatch / patch.c
index f89f9e7..e8029ae 100644 (file)
@@ -42,7 +42,6 @@ static void notrace klp_ftrace_handler(unsigned long ip,
                                       struct ftrace_ops *fops,
                                       struct ftrace_regs *fregs)
 {
-       struct pt_regs *regs = ftrace_get_regs(fregs);
        struct klp_ops *ops;
        struct klp_func *func;
        int patch_state;
@@ -118,7 +117,7 @@ static void notrace klp_ftrace_handler(unsigned long ip,
        if (func->nop)
                goto unlock;
 
-       klp_arch_set_pc(regs, (unsigned long)func->new_func);
+       klp_arch_set_pc(fregs, (unsigned long)func->new_func);
 
 unlock:
        preempt_enable_notrace();
@@ -200,8 +199,10 @@ static int klp_patch_func(struct klp_func *func)
                        return -ENOMEM;
 
                ops->fops.func = klp_ftrace_handler;
-               ops->fops.flags = FTRACE_OPS_FL_SAVE_REGS |
-                                 FTRACE_OPS_FL_DYNAMIC |
+               ops->fops.flags = FTRACE_OPS_FL_DYNAMIC |
+#ifndef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS
+                                 FTRACE_OPS_FL_SAVE_REGS |
+#endif
                                  FTRACE_OPS_FL_IPMODIFY |
                                  FTRACE_OPS_FL_PERMANENT;