summaryrefslogtreecommitdiffstats
path: root/kernel/fail_function.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2018-03-24 09:25:26 +0100
committerIngo Molnar <mingo@kernel.org>2018-03-24 09:25:26 +0100
commitea2301b6220117398a1de4f4bc853fbe886d5e08 (patch)
tree8823c3becd0b4fd3db9706892845cd02f760627a /kernel/fail_function.c
parent0803e6051c1562e1525c3e044313390bf8b35c2b (diff)
parent99fec39e7725d091c94d1bb0242e40c8092994f6 (diff)
downloadlinux-ea2301b6220117398a1de4f4bc853fbe886d5e08.tar.gz
linux-ea2301b6220117398a1de4f4bc853fbe886d5e08.zip
Merge branch 'linus' into x86/dma, to resolve a conflict with upstream
Conflicts: arch/x86/mm/init_64.c Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/fail_function.c')
-rw-r--r--kernel/fail_function.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/fail_function.c b/kernel/fail_function.c
index 21b0122cb39c..1d5632d8bbcc 100644
--- a/kernel/fail_function.c
+++ b/kernel/fail_function.c
@@ -14,6 +14,15 @@
static int fei_kprobe_handler(struct kprobe *kp, struct pt_regs *regs);
+static void fei_post_handler(struct kprobe *kp, struct pt_regs *regs,
+ unsigned long flags)
+{
+ /*
+ * A dummy post handler is required to prohibit optimizing, because
+ * jump optimization does not support execution path overriding.
+ */
+}
+
struct fei_attr {
struct list_head list;
struct kprobe kp;
@@ -56,6 +65,7 @@ static struct fei_attr *fei_attr_new(const char *sym, unsigned long addr)
return NULL;
}
attr->kp.pre_handler = fei_kprobe_handler;
+ attr->kp.post_handler = fei_post_handler;
attr->retval = adjust_error_retval(addr, 0);
INIT_LIST_HEAD(&attr->list);
}