From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752513AbdGGRIF (ORCPT ); Fri, 7 Jul 2017 13:08:05 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:38338 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750726AbdGGRID (ORCPT ); Fri, 7 Jul 2017 13:08:03 -0400 From: "Naveen N. Rao" To: Ingo Molnar Cc: Masami Hiramatsu , Ananth N Mavinakayanahalli , linux-kernel@vger.kernel.org Subject: [PATCH v2 3/3] kernel/kprobes: Ensure that jprobe probepoints are at function entry Date: Fri, 7 Jul 2017 22:37:26 +0530 X-Mailer: git-send-email 2.13.2 In-Reply-To: References: In-Reply-To: References: X-TM-AS-MML: disable x-cbid: 17070717-0040-0000-0000-00000341D900 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17070717-0041-0000-0000-00000CBD0DBC Message-Id: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-07-07_08:,, 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-1707070284 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 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/kernel/kprobes.c b/kernel/kprobes.c index db3cd3e60bdd..a1606a4224e1 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -1795,10 +1795,14 @@ int register_jprobe(struct jprobe *jp) unsigned long addr, offset; struct kprobe *kp = &jp->kp; - /* Verify probepoint is a function entry point */ + /* + * Verify probepoint as well as the jprobe handler are + * valid function entry points. + */ addr = arch_deref_entry_point(jp->entry); - if (kallsyms_lookup_size_offset(addr, NULL, &offset) && offset == 0) { + if (kallsyms_lookup_size_offset(addr, NULL, &offset) && offset == 0 && + kprobe_on_func_entry(kp->addr, kp->symbol_name, kp->offset)) { kp->pre_handler = setjmp_pre_handler; kp->break_handler = longjmp_break_handler; return register_kprobe(kp); -- 2.13.2