Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753378AbbGFFET (ORCPT ); Mon, 6 Jul 2015 01:04:19 -0400 Received: from mx1.redhat.com ([209.132.183.28]:34167 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751714AbbGFFDx (ORCPT ); Mon, 6 Jul 2015 01:03:53 -0400 From: Pratyush Anand To: linux-arm-kernel@lists.infradead.org, linux@arm.linux.org.uk, catalin.marinas@arm.com, will.deacon@arm.com Cc: linux-kernel@vger.kernel.org, wcohen@redhat.com, dave.long@linaro.org, steve.capper@linaro.org, masami.hiramatsu.pt@hitachi.com, Pratyush Anand Subject: [PATCH 2/2] arm64: Make all entry code as non-kprobe-able Date: Mon, 6 Jul 2015 10:33:22 +0530 Message-Id: <683f80cef9b2b778be868e77b01a245585448a86.1436158027.git.panand@redhat.com> In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2182 Lines: 74 Entry symbols are not kprobe safe. So blacklist them for kprobing. Signed-off-by: Pratyush Anand --- arch/arm64/kernel/entry.S | 3 +++ arch/arm64/kernel/kprobes.c | 9 +++++++++ arch/arm64/kernel/vmlinux.lds.S | 1 + 3 files changed, 13 insertions(+) diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index a7691a378668..2ea24f6bc06b 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -202,6 +202,7 @@ tsk .req x28 // current thread_info * Exception vectors. */ + .section ".entry.text", "ax" .align 11 ENTRY(vectors) ventry el1_sync_invalid // Synchronous EL1t @@ -737,3 +738,5 @@ ENTRY(sys_rt_sigreturn_wrapper) mov x0, sp b sys_rt_sigreturn ENDPROC(sys_rt_sigreturn_wrapper) + + .section ".text", "ax" diff --git a/arch/arm64/kernel/kprobes.c b/arch/arm64/kernel/kprobes.c index 6c9f8b5f04ce..9bc02c151f7f 100644 --- a/arch/arm64/kernel/kprobes.c +++ b/arch/arm64/kernel/kprobes.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "kprobes.h" #include "kprobes-arm64.h" @@ -661,6 +662,14 @@ int __kprobes arch_trampoline_kprobe(struct kprobe *p) return 0; } +bool arch_within_kprobe_blacklist(unsigned long addr) +{ + return (addr >= (unsigned long)__kprobes_text_start && + addr < (unsigned long)__kprobes_text_end) || + (addr >= (unsigned long)__entry_text_start && + addr < (unsigned long)__entry_text_end); +} + int __init arch_init_kprobes(void) { return 0; diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S index 1fa6adc7aa83..11fb2b0117d0 100644 --- a/arch/arm64/kernel/vmlinux.lds.S +++ b/arch/arm64/kernel/vmlinux.lds.S @@ -97,6 +97,7 @@ SECTIONS *(.exception.text) __exception_text_end = .; IRQENTRY_TEXT + ENTRY_TEXT TEXT_TEXT SCHED_TEXT LOCK_TEXT -- 2.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/