Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp4698435rwb; Tue, 20 Sep 2022 18:59:44 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7hkgf4pr4/03AXV4LZ6egWj1cwnA4ud32uRsL/4cyS0UokSKJl+pq76MNlTy3AngiahF50 X-Received: by 2002:a17:907:270c:b0:76f:afae:2705 with SMTP id w12-20020a170907270c00b0076fafae2705mr18505853ejk.463.1663725584444; Tue, 20 Sep 2022 18:59:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663725584; cv=none; d=google.com; s=arc-20160816; b=rWm8HXt6XEXM/UqvWdPWejAuKjriVeKG512C4dnC5R9xt5s8gR370/4rg+DIWPAkXJ TzfN6rvUB+ZRe7xztN/kSJsCoHcvgMZ8i0PL07TBIdSv1wPyhS95zR2f6qKNg/S8Q7rS E209RIEiT8OR7iPZDbcIxTmL3qTQOngXavzmP3N6kWZ4JmPAakR1VcAfs/7PDSP09Vmu BJGk2NIkepeMn6Yn8c2cmma4MVDvsFG1aUz/lyk1nShMV6wgKX2NN6Hjwhs3UcC+k8Rz d8bDLbtUFbsyM/29V7B8OhVFIQiDTpghKMVhs6H5TjIWgsx+sd+Na8JvpARigLhaTb64 ZqUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=AKP0IcQtShLN4KXO24kx/d2UwlEoX0n/HVQSGAErVAE=; b=ZwKuRn8X9dDI5A+qsLlBbKwAMev4qOUHMR6M743VmeE7+aJn+9WXoKreFE5vBHjvzy Co1YovXWR9lD9BKXNyUPO2RZhDolS1af3xdRumNBlw4q/99Z2A96hs+R5T0U8hCwk/u0 7ZnIRVwnz/0HsiyxFNRtH7UjTfhog0Ebx7kHs92CoEMejvji07BLKCgPkMjMdrMXiOAU tIhVXtctavxH/HSzfnE+x/ZZ3i4UG2YfLQCMTQ5F7iFB5xWoqmYD1RBMlehcE/FwFMXy FvE5HOmJbYiJRXzKtXl5vuzceMmUFeV/sSYSfH9sukbEFMhpPWzCUWr10v2Hn2JHvYb4 rJxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=hPk4rLVa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id sa35-20020a1709076d2300b0077d7f94aadesi1286878ejc.364.2022.09.20.18.59.18; Tue, 20 Sep 2022 18:59:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=hPk4rLVa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231438AbiIUBoN (ORCPT + 99 others); Tue, 20 Sep 2022 21:44:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34286 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231433AbiIUBoL (ORCPT ); Tue, 20 Sep 2022 21:44:11 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 62D2871995; Tue, 20 Sep 2022 18:44:10 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id EB6E762EEC; Wed, 21 Sep 2022 01:44:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5C5ECC43145; Wed, 21 Sep 2022 01:44:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1663724649; bh=a4MbeyDQ0cNKqjKPlY+9BYkCDy+gVjRncnZlwoiA8Uw=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=hPk4rLVaP1dvrnGGN/a3RnxHQUejYh7dooTCeIz3MG+8l6cv95S745Ks1PSoi1XQ8 yK2g3x5E8WhOABaPVmbC5CBUbMy5Licj5ljtzI8TXD+WjBNDoEsi06z9Cl64hKASA+ GhwivC1JRJ6oMxXDhqO8zH7Fsd6MoqhR3rehU0p1SV9XwUlvPgkgaExXDhej62QIP3 2+E2/uiHmQdNuFJXrVvZY2rKwdCAMVfEiBCI3oQ6Jyy6VRWy047sTsnUjpSlQxqQrY 9SEK6QZ93QxMf/r94qFOSMTduwpSxEbH0RnLrHFfIJcZoni/daMyKbwDUW3n08WXGI V8SwTrPjmdbdw== Received: by mail-oa1-f44.google.com with SMTP id 586e51a60fabf-11e9a7135easo6992207fac.6; Tue, 20 Sep 2022 18:44:09 -0700 (PDT) X-Gm-Message-State: ACrzQf3+55zMsIvZtkW5AZaouuZT22iyO+XHkFBe4DK5/Oet8F0XuvDN 8dUhrodw2gEN/Z6N9gao5bp4tN8zuqgQAY1NMc8= X-Received: by 2002:a05:6870:5803:b0:12c:c3e0:99dc with SMTP id r3-20020a056870580300b0012cc3e099dcmr3618516oap.19.1663724648463; Tue, 20 Sep 2022 18:44:08 -0700 (PDT) MIME-Version: 1.0 References: <20220920151202.180057-1-chenzhongjin@huawei.com> <20220920151202.180057-7-chenzhongjin@huawei.com> In-Reply-To: <20220920151202.180057-7-chenzhongjin@huawei.com> From: Guo Ren Date: Wed, 21 Sep 2022 09:43:54 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH -next 6/7] riscv: stacktrace: Fix unwinding on ftrace_regs_call To: Chen Zhongjin Cc: linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-perf-users@vger.kernel.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, peterz@infradead.org, mingo@redhat.com, acme@kernel.org, mark.rutland@arm.com, alexander.shishkin@linux.intel.com, namhyung@kernel.org, jolsa@kernel.org, nsaenzju@redhat.com, frederic@kernel.org, changbin.du@intel.com, vincent.chen@sifive.com, ardb@kernel.org, mhiramat@kernel.org, rostedt@goodmis.org, keescook@chromium.org, catalin.marinas@arm.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Sep 20, 2022 at 11:15 PM Chen Zhongjin wrote: > > When unwinding on ftrace_regs_call, the traced function will be skipped > because ftrace_regs_caller doesn't save the fp and ra. > > Save the encoded fp so that we can get the pt_regs so that we can unwind > from ftrace_regs_call to the traced function. > > Also the pt_regs->status should be set as kernel mode. > > Stacktrace before this patch: > > Call Trace: > ... > [] handler_pre+0x30/0x4a [kprobe_unwind] > [] aggr_pre_handler+0x60/0x94 > [] kprobe_ftrace_handler+0x13e/0x188 > [] ftrace_regs_call+0x8/0x10 > [] do_one_initcall+0x4c/0x1f2 > [] do_init_module+0x56/0x210 > ... > > Stacktrace after this patch: > > Call Trace: > ... > [] handler_pre+0x30/0x4a [kprobe_unwind] > [] aggr_pre_handler+0x60/0x94 > [] kprobe_ftrace_handler+0x13e/0x188 > [] ftrace_regs_call+0x8/0x10 > + [] empty_call+0x0/0x1e [kprobe_unwind] > [] do_one_initcall+0x4c/0x1f2 > [] do_init_module+0x56/0x210 > ... > > Signed-off-by: Chen Zhongjin > --- > arch/riscv/kernel/mcount-dyn.S | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/arch/riscv/kernel/mcount-dyn.S b/arch/riscv/kernel/mcount-dyn.S > index d171eca623b6..56a4014c392f 100644 > --- a/arch/riscv/kernel/mcount-dyn.S > +++ b/arch/riscv/kernel/mcount-dyn.S > @@ -10,6 +10,8 @@ > #include > #include > #include > +#include > +#include > > .text > > @@ -97,6 +99,11 @@ > REG_S x29, PT_T4(sp) > REG_S x30, PT_T5(sp) > REG_S x31, PT_T6(sp) > + > +#ifdef CONFIG_FRAME_POINTER > + li s0, SR_PP > + REG_S s0, PT_STATUS(sp) Change another register. > +#endif > .endm > > .macro RESTORE_ALL > @@ -172,6 +179,7 @@ ENDPROC(ftrace_caller) > #ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS > ENTRY(ftrace_regs_caller) > SAVE_ALL > + ENCODE_FRAME_POINTER Maybe the patch should merge with others, so separated make it hard to review. > > addi a0, ra, -FENTRY_RA_OFFSET > la a1, function_trace_op > -- > 2.17.1 > -- Best Regards Guo Ren