[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20170629145655.5282-1-naveen.n.rao@linux.vnet.ibm.com>
Date: Thu, 29 Jun 2017 20:26:55 +0530
From: "Naveen N. Rao" <naveen.n.rao@...ux.vnet.ibm.com>
To: Masami Hiramatsu <mhiramat@...nel.org>,
Ingo Molnar <mingo@...nel.org>
Cc: Ananth N Mavinakayanahalli <ananth@...ux.vnet.ibm.com>,
linux-kernel@...r.kernel.org
Subject: [PATCH] jprobes: Ensure that the probepoint is at function entry
Similar to commit 90ec5e89e393c ("kretprobes: Ensure probe location is
at function entry"), ensure that the jprobe probepoint is at function
entry.
Signed-off-by: Naveen N. Rao <naveen.n.rao@...ux.vnet.ibm.com>
---
kernel/kprobes.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index adfe3b4cfe05..950018609339 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -1776,9 +1776,14 @@ int register_jprobes(struct jprobe **jps, int num)
jp = jps[i];
addr = arch_deref_entry_point(jp->entry);
- /* Verify probepoint is a function entry point */
+ /*
+ * Verify probepoint as well as the jprobe handler are
+ * function entry points.
+ */
if (kallsyms_lookup_size_offset(addr, NULL, &offset) &&
- offset == 0) {
+ offset == 0 &&
+ function_offset_within_entry(jp->kp.addr,
+ jp->kp.symbol_name, jp->kp.offset)) {
jp->kp.pre_handler = setjmp_pre_handler;
jp->kp.break_handler = longjmp_break_handler;
ret = register_kprobe(&jp->kp);
--
2.13.1
Powered by blists - more mailing lists