Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp3638190ybb; Tue, 31 Mar 2020 09:05:24 -0700 (PDT) X-Google-Smtp-Source: ADFU+vscljzVOCT6tm2tMNjJ8/qcTNCd8pl1FB7Q4D/6IMYjkmjWupz4+saCkCXbYDOe/1lmwcYj X-Received: by 2002:a9d:7992:: with SMTP id h18mr14357844otm.315.1585670724474; Tue, 31 Mar 2020 09:05:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585670724; cv=none; d=google.com; s=arc-20160816; b=nslQ+oj6ZMs8GWa65vUrhWQuRiLo13UFiYkNnywdcjh49uQDi1tJdfamXtgMtmHliA N4VFiA9iv96Ydf54FkjDKpgc9r+GwHDmCbgBvqxn6pffChM556rzZLOWCuovsXagr//k 3Wpfl0VRpH3vcRJtOVc1QLm9xmNs9iBZEVFYNq6Tivv68jfA+gWTMGhkd8Smn3AVHFSz yy5zN8xvIOd0WwVw5KjyQDD1GPHJf9FrmuRSP/TMeYLvE/Bva87HD/DefuYBTom+akMV 5gFqOl3fod2Zj4HMMOWX8/GFAwf8oFzuLdaQVntA2l7u+Rea+wM8Wnn8Y6ROoO4Yno2w ozfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:cc:to:subject:from:references :in-reply-to:message-id:dkim-signature; bh=Rs1DUpF7/W36Dme2CHWMdiXRHyz2j679025fiw7k9yM=; b=yi0N6m+CF68ShYqhan4CsQbzHF7gzE7yqbG9lD6cEXjqNug6oqLgGqvy9as8lds3fb ha0Gc+JuajTnE8LjRgPg3BgsDqaPm+Vzaj87B4vkeO7XP0GwsszItSLTsrWyGVFO/Pcp MNW12aYjgNaYlLr8ZQcE6iF63VSdyb0Ggl8ENRhuzGIzFC3T641G5S8vQEE+jEzgUwfj VfXQhhA50zK3pkkb08kUZNYQKVT919FEjy4/XqVpNwdQM1/3XnVyu+PkH8lBald55+9V AICvmuBzw02piWWVio5wp2yU0WHadYc05X8NIzoXYfRmxg08g0gOr1qtM6Zf1J7nSQSX ENig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@c-s.fr header.s=mail header.b=cSz0OuMk; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 94si7448494otc.25.2020.03.31.09.04.54; Tue, 31 Mar 2020 09:05:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@c-s.fr header.s=mail header.b=cSz0OuMk; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731323AbgCaQDz (ORCPT + 99 others); Tue, 31 Mar 2020 12:03:55 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:10309 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731249AbgCaQDs (ORCPT ); Tue, 31 Mar 2020 12:03:48 -0400 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 48sDdr3f43z9twdY; Tue, 31 Mar 2020 18:03:44 +0200 (CEST) Authentication-Results: localhost; dkim=pass reason="1024-bit key; insecure key" header.d=c-s.fr header.i=@c-s.fr header.b=cSz0OuMk; dkim-adsp=pass; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id IkFnd-s5gizt; Tue, 31 Mar 2020 18:03:44 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 48sDdr2ccrz9twdT; Tue, 31 Mar 2020 18:03:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=c-s.fr; s=mail; t=1585670624; bh=Rs1DUpF7/W36Dme2CHWMdiXRHyz2j679025fiw7k9yM=; h=In-Reply-To:References:From:Subject:To:Cc:Date:From; b=cSz0OuMkl2cbegWdSTzrLhODouZC9EIFDoEeOZra5ZBQSbaooveIrxmz4x/xxLmlN siHSKF5Ory/qLZ7CXyj60CPgJ3SwhUjy8RKuKYY6Sh2X3zcEB3/wKEluDspgd3k6rM O1U45/rt6PoHhobm3m/AadU9o5Xt7Obieesu6SMA= Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id E21978B868; Tue, 31 Mar 2020 18:03:45 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id aG0TAoQEIA_2; Tue, 31 Mar 2020 18:03:45 +0200 (CEST) Received: from pc16570vm.idsi0.si.c-s.fr (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 919118B752; Tue, 31 Mar 2020 18:03:45 +0200 (CEST) Received: by pc16570vm.idsi0.si.c-s.fr (Postfix, from userid 0) id 814BC656AC; Tue, 31 Mar 2020 16:03:45 +0000 (UTC) Message-Id: In-Reply-To: <1ae02b6637b87fc5aaa1d5012c3e2cb30e62b4a3.1585670437.git.christophe.leroy@c-s.fr> References: <1ae02b6637b87fc5aaa1d5012c3e2cb30e62b4a3.1585670437.git.christophe.leroy@c-s.fr> From: Christophe Leroy Subject: [PATCH v2 10/12] powerpc/entry32: Blacklist exception entry points for kprobe. To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , naveen.n.rao@linux.vnet.ibm.com Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Tue, 31 Mar 2020 16:03:45 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org kprobe does not handle events happening in real mode. As exception entry points are running with MMU disabled, blacklist them. The handling of TLF_NAPPING and TLF_SLEEPING is moved before the CONFIG_TRACE_IRQFLAGS which contains 'reenable_mmu' because from there kprobe will be possible as the kernel will run with MMU enabled. Signed-off-by: Christophe Leroy Acked-by: Naveen N. Rao --- v2: Moved TLF_NAPPING and TLF_SLEEPING handling --- arch/powerpc/kernel/entry_32.S | 37 ++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 94f78c03cb79..215aa3a6d4f7 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S @@ -51,6 +51,7 @@ mcheck_transfer_to_handler: mfspr r0,SPRN_DSRR1 stw r0,_DSRR1(r11) /* fall through */ +_ASM_NOKPROBE_SYMBOL(mcheck_transfer_to_handler) .globl debug_transfer_to_handler debug_transfer_to_handler: @@ -59,6 +60,7 @@ debug_transfer_to_handler: mfspr r0,SPRN_CSRR1 stw r0,_CSRR1(r11) /* fall through */ +_ASM_NOKPROBE_SYMBOL(debug_transfer_to_handler) .globl crit_transfer_to_handler crit_transfer_to_handler: @@ -94,6 +96,7 @@ crit_transfer_to_handler: rlwinm r0,r1,0,0,(31 - THREAD_SHIFT) stw r0,KSP_LIMIT(r8) /* fall through */ +_ASM_NOKPROBE_SYMBOL(crit_transfer_to_handler) #endif #ifdef CONFIG_40x @@ -115,6 +118,7 @@ crit_transfer_to_handler: rlwinm r0,r1,0,0,(31 - THREAD_SHIFT) stw r0,KSP_LIMIT(r8) /* fall through */ +_ASM_NOKPROBE_SYMBOL(crit_transfer_to_handler) #endif /* @@ -127,6 +131,7 @@ crit_transfer_to_handler: .globl transfer_to_handler_full transfer_to_handler_full: SAVE_NVGPRS(r11) +_ASM_NOKPROBE_SYMBOL(transfer_to_handler_full) /* fall through */ .globl transfer_to_handler @@ -227,6 +232,23 @@ transfer_to_handler_cont: SYNC RFI /* jump to handler, enable MMU */ +#if defined (CONFIG_PPC_BOOK3S_32) || defined(CONFIG_E500) +4: rlwinm r12,r12,0,~_TLF_NAPPING + stw r12,TI_LOCAL_FLAGS(r2) + b power_save_ppc32_restore + +7: rlwinm r12,r12,0,~_TLF_SLEEPING + stw r12,TI_LOCAL_FLAGS(r2) + lwz r9,_MSR(r11) /* if sleeping, clear MSR.EE */ + rlwinm r9,r9,0,~MSR_EE + lwz r12,_LINK(r11) /* and return to address in LR */ + kuap_restore r11, r2, r3, r4, r5 + lwz r2, GPR2(r11) + b fast_exception_return +#endif +_ASM_NOKPROBE_SYMBOL(transfer_to_handler) +_ASM_NOKPROBE_SYMBOL(transfer_to_handler_cont) + #ifdef CONFIG_TRACE_IRQFLAGS 1: /* MSR is changing, re-enable MMU so we can notify lockdep. We need to * keep interrupts disabled at this point otherwise we might risk @@ -272,21 +294,6 @@ reenable_mmu: bctr /* jump to handler */ #endif /* CONFIG_TRACE_IRQFLAGS */ -#if defined (CONFIG_PPC_BOOK3S_32) || defined(CONFIG_E500) -4: rlwinm r12,r12,0,~_TLF_NAPPING - stw r12,TI_LOCAL_FLAGS(r2) - b power_save_ppc32_restore - -7: rlwinm r12,r12,0,~_TLF_SLEEPING - stw r12,TI_LOCAL_FLAGS(r2) - lwz r9,_MSR(r11) /* if sleeping, clear MSR.EE */ - rlwinm r9,r9,0,~MSR_EE - lwz r12,_LINK(r11) /* and return to address in LR */ - kuap_restore r11, r2, r3, r4, r5 - lwz r2, GPR2(r11) - b fast_exception_return -#endif - #ifndef CONFIG_VMAP_STACK /* * On kernel stack overflow, load up an initial stack pointer -- 2.25.0