From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753367AbdF2O5S (ORCPT ); Thu, 29 Jun 2017 10:57:18 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:44647 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751974AbdF2O5M (ORCPT ); Thu, 29 Jun 2017 10:57:12 -0400 From: "Naveen N. Rao" To: Masami Hiramatsu , Ingo Molnar Cc: Ananth N Mavinakayanahalli , linux-kernel@vger.kernel.org Subject: [PATCH] jprobes: Ensure that the probepoint is at function entry Date: Thu, 29 Jun 2017 20:26:55 +0530 X-Mailer: git-send-email 2.13.1 X-TM-AS-MML: disable x-cbid: 17062914-0012-0000-0000-000002503589 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17062914-0013-0000-0000-0000076935DA Message-Id: <20170629145655.5282-1-naveen.n.rao@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-06-29_10:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1706290243 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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