Received: by 2002:a05:6a10:c604:0:0:0:0 with SMTP id y4csp2319588pxt; Sun, 8 Aug 2021 19:44:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzpabKnkqHuo6K3ifwumh+ubqKbTp0A8F5ba9NCTNx9+WNb+bu3NHbqXBnF1ubWFNywsKcx X-Received: by 2002:a5d:94c6:: with SMTP id y6mr392352ior.202.1628477055856; Sun, 08 Aug 2021 19:44:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628477055; cv=none; d=google.com; s=arc-20160816; b=ka5R6BuMh39VrLXJwsWHH6cg6G3veDxsVM43fiKK1F8+FzBpNfz0OMmHwUOCYshSmJ m6563G6JH8MhquZX5gi0noiiy8ssyABVXbB7C3h+huQNtF1AfD4Yl8WQnaEKuFTqZlgF mwtFthmw29HqCNVqdRvwZjP60+gi7KDpD2vttFuy5zdcMBOZADG7/+S8NlDt0kgi9eT1 iNoAihl/Iw+WYsseEFXj3DC6rwrzZIJF01pNKD+iXqKy5rJmOdrkdKsa84sxn6h1Cyik lQNyKTaevIv83Z4j1ZaYp1U4AV+XvvZV7zzEYwFOBaJbK1CNMU5fw5UEpu3lFu9NgICc 0caQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=CM4dx/4CZWioigWQpBfaKoJfz87dM09HcLKUXeDflfg=; b=cS99pnq78K5lejM1sJWQTr3TtWey1PhMIVHznyEk0Maw/F7Rrchv3yJrun/U1EjSau ApfUlq/idSp/UK7DEOuQoRRJVuXi7Gt7SLlNW0znVjDdD0H4EiGJnkTCaqEB5XgsB3DA 9MS9iHUx3MIBDLGldZurwu4wuBp/P85lTcPbz2HA1m6p5ogLnUxQhiHjOGj71eSHFH4K u+ITV3T9TFjvmMeWT0GJGcaV4K04QQBW0sKESZJEyKl52dLkEPch92dYYT3LeKc2V9wI xWGBtmXsRmELFuptJF4iBtLG1+BHXdEpXyWVLJksoo+DXiBAMnqn/x/9Xf9wyw1xd0ps d9aw== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m1si19045202ilu.13.2021.08.08.19.44.03; Sun, 08 Aug 2021 19:44:15 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232729AbhHICf5 (ORCPT + 99 others); Sun, 8 Aug 2021 22:35:57 -0400 Received: from szxga02-in.huawei.com ([45.249.212.188]:8379 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232736AbhHICf4 (ORCPT ); Sun, 8 Aug 2021 22:35:56 -0400 Received: from dggemv711-chm.china.huawei.com (unknown [172.30.72.57]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Gjg7w0FmFz85RR; Mon, 9 Aug 2021 10:31:40 +0800 (CST) Received: from dggpemm500019.china.huawei.com (7.185.36.180) by dggemv711-chm.china.huawei.com (10.1.198.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Mon, 9 Aug 2021 10:35:33 +0800 Received: from ubuntu1804.huawei.com (10.67.174.98) by dggpemm500019.china.huawei.com (7.185.36.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Mon, 9 Aug 2021 10:35:33 +0800 From: Pu Lehui To: , , , , , , , , CC: , , , Subject: [PATCH v2] powerpc/kprobes: Fix kprobe Oops happens in booke Date: Mon, 9 Aug 2021 10:36:58 +0800 Message-ID: <20210809023658.218915-1-pulehui@huawei.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.67.174.98] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpemm500019.china.huawei.com (7.185.36.180) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- v1->v2: - use IS_ENABLED(CONFIG_BOOKE) as suggested by Michael Ellerman and Christophe Leroy - update Oops log to make problem clear 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 cbc28d1a2e1b..7a7cd6bda53e 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c @@ -292,7 +292,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.17.1