Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp333736pxb; Mon, 16 Aug 2021 06:32:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwbnmqWcQIFJyyVmusqucDsZn0GAmsY/WuFQwPOI3W1TmdO+qDbAv83df84WjVZ6qMEOB5i X-Received: by 2002:a5d:9253:: with SMTP id e19mr13352931iol.35.1629120769980; Mon, 16 Aug 2021 06:32:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629120769; cv=none; d=google.com; s=arc-20160816; b=fmMjlKmc585m1QyGOuD0G5dhu/sHbFth7YSIqzcCDQ0S5IciEEbO2yBKVlN8uGQ8Zv W4FpCKHVm6az02kDpYg1YGA1bv/5Ke95znr7J7rjLJpVJppcEocXY28fjpkTDkojqiek 4BSQjpj3bE75gYRppWjPZ/9yiWK+GhnGN+MGuMYiKzK3Bt6XxymXPPwRHDwFGg6T/CIG alaGKL97YLr4eQXE1f+0+336TKeCakNTsBqtReel7wZPavKnh3VwW1eL4vkXZMGyZfB7 dZZazuQCq4i+FODkI0KNpHhOoO/WZQzLZ2clo26Fuf8fliePIco4G2bvsQB+qNcKNAHc XaVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=iDb+WObjy7NpbZ5YLA29wjqdfkBvhNgWZ/FC5we57i8=; b=K/MrzVAi97S24wxN2KtIFaYK2ip82LLLJeP1TLvedOmlgCgTfVuYU5wxrPelpbaSNP CBl+9x5oXhOq0hOlyUoci5VQ3XeLcRQuJjC59zGxbL3Jvcay0Tg5zu18GODMAmOxGGrL rFpRFyYTzL+1VHzX6bWLsjuQgk/eBcmtZ5Tt9S5+7G4be4koeyIJADQ36g2fOggXUHl3 Gevg0pBIXvDJGyY3kdQFrlnwACA4IfPY13zbThkFLW7S4QktysKvz4Wc5ezKa1WkJWLO 3pjw7K79MKP/hrQNvnnK9R7XzokQJzN4mSMWZ9oZKtxkvIsQFpWzK+/8sKhWdA6uc/G9 6OrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ZAfX6Bbw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r11si14692213ill.21.2021.08.16.06.32.38; Mon, 16 Aug 2021 06:32:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ZAfX6Bbw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236748AbhHPNae (ORCPT + 99 others); Mon, 16 Aug 2021 09:30:34 -0400 Received: from mail.kernel.org ([198.145.29.99]:44230 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240523AbhHPNTv (ORCPT ); Mon, 16 Aug 2021 09:19:51 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 155CD632A2; Mon, 16 Aug 2021 13:14:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1629119675; bh=ieStwfpHrQKIz95Ll2LH1uShmhGTMyeSIW683BIpQvQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZAfX6BbwOrUY2PTrsO0Cw+a6p7zGljyhVNg79mrjk7iGZTF+L3iYtNXg1yHyKBUJ4 hbORejEV/sJWowJttKCYkBsDodN/RKAYA64aIDi6ND6f+iyAVjeq0Htdd/idc/CtOT hsuQgeR7pfOOSPlpHLge1fKnfA0SrkITwK35b5dg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Pu Lehui , Michael Ellerman , Sasha Levin Subject: [PATCH 5.13 118/151] powerpc/kprobes: Fix kprobe Oops happens in booke Date: Mon, 16 Aug 2021 15:02:28 +0200 Message-Id: <20210816125447.953054810@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210816125444.082226187@linuxfoundation.org> References: <20210816125444.082226187@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pu Lehui [ Upstream commit 43e8f76006592cb1573a959aa287c45421066f9c ] When using kprobe on powerpc booke series processor, Oops happens as show bellow: / # echo "p:myprobe do_nanosleep" > /sys/kernel/debug/tracing/kprobe_events / # echo 1 > /sys/kernel/debug/tracing/events/kprobes/myprobe/enable / # sleep 1 [ 50.076730] Oops: Exception in kernel mode, sig: 5 [#1] [ 50.077017] BE PAGE_SIZE=4K SMP NR_CPUS=24 QEMU e500 [ 50.077221] Modules linked in: [ 50.077462] CPU: 0 PID: 77 Comm: sleep Not tainted 5.14.0-rc4-00022-g251a1524293d #21 [ 50.077887] NIP: c0b9c4e0 LR: c00ebecc CTR: 00000000 [ 50.078067] REGS: c3883de0 TRAP: 0700 Not tainted (5.14.0-rc4-00022-g251a1524293d) [ 50.078349] MSR: 00029000 CR: 24000228 XER: 20000000 [ 50.078675] [ 50.078675] GPR00: c00ebdf0 c3883e90 c313e300 c3883ea0 00000001 00000000 c3883ecc 00000001 [ 50.078675] GPR08: c100598c c00ea250 00000004 00000000 24000222 102490c2 bff4180c 101e60d4 [ 50.078675] GPR16: 00000000 102454ac 00000040 10240000 10241100 102410f8 10240000 00500000 [ 50.078675] GPR24: 00000002 00000000 c3883ea0 00000001 00000000 0000c350 3b9b8d50 00000000 [ 50.080151] NIP [c0b9c4e0] do_nanosleep+0x0/0x190 [ 50.080352] LR [c00ebecc] hrtimer_nanosleep+0x14c/0x1e0 [ 50.080638] Call Trace: [ 50.080801] [c3883e90] [c00ebdf0] hrtimer_nanosleep+0x70/0x1e0 (unreliable) [ 50.081110] [c3883f00] [c00ec004] sys_nanosleep_time32+0xa4/0x110 [ 50.081336] [c3883f40] [c001509c] ret_from_syscall+0x0/0x28 [ 50.081541] --- interrupt: c00 at 0x100a4d08 [ 50.081749] NIP: 100a4d08 LR: 101b5234 CTR: 00000003 [ 50.081931] REGS: c3883f50 TRAP: 0c00 Not tainted (5.14.0-rc4-00022-g251a1524293d) [ 50.082183] MSR: 0002f902 CR: 24000222 XER: 00000000 [ 50.082457] [ 50.082457] GPR00: 000000a2 bf980040 1024b4d0 bf980084 bf980084 64000000 00555345 fefefeff [ 50.082457] GPR08: 7f7f7f7f 101e0000 00000069 00000003 28000422 102490c2 bff4180c 101e60d4 [ 50.082457] GPR16: 00000000 102454ac 00000040 10240000 10241100 102410f8 10240000 00500000 [ 50.082457] GPR24: 00000002 bf9803f4 10240000 00000000 00000000 100039e0 00000000 102444e8 [ 50.083789] NIP [100a4d08] 0x100a4d08 [ 50.083917] LR [101b5234] 0x101b5234 [ 50.084042] --- interrupt: c00 [ 50.084238] Instruction dump: [ 50.084483] 4bfffc40 60000000 60000000 60000000 9421fff0 39400402 914200c0 38210010 [ 50.084841] 4bfffc20 00000000 00000000 00000000 <7fe00008> 7c0802a6 7c892378 93c10048 [ 50.085487] ---[ end trace f6fffe98e2fa8f3e ]--- [ 50.085678] Trace/breakpoint trap There is no real mode for booke arch and the MMU translation is always on. The corresponding MSR_IS/MSR_DS bit in booke is used to switch the address space, but not for real mode judgment. Fixes: 21f8b2fa3ca5 ("powerpc/kprobes: Ignore traps that happened in real mode") Signed-off-by: Pu Lehui Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/20210809023658.218915-1-pulehui@huawei.com Signed-off-by: Sasha Levin --- arch/powerpc/kernel/kprobes.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index e8c2a6373157..00fafc8b249e 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c @@ -276,7 +276,8 @@ int kprobe_handler(struct pt_regs *regs) if (user_mode(regs)) return 0; - if (!(regs->msr & MSR_IR) || !(regs->msr & MSR_DR)) + if (!IS_ENABLED(CONFIG_BOOKE) && + (!(regs->msr & MSR_IR) || !(regs->msr & MSR_DR))) return 0; /* -- 2.30.2