Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp114798rwb; Tue, 6 Dec 2022 18:09:13 -0800 (PST) X-Google-Smtp-Source: AA0mqf5IVLldilgUOkcRL95bc7QKJxACWx83bPcPO+mbwD4FvIX3nhvh3c5vqC2v1oz369zo549K X-Received: by 2002:a17:906:6bd2:b0:7c0:ea28:6976 with SMTP id t18-20020a1709066bd200b007c0ea286976mr10629827ejs.418.1670378953600; Tue, 06 Dec 2022 18:09:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670378953; cv=none; d=google.com; s=arc-20160816; b=CmPWBOSgABJSVgpHO6vPDsoCOsZBXSfN5A9Z2w1yZUJu20BZpyP/Wf0SkCiaxhBvW/ pX9C0lkRpJjYM0HnrHjbJFGN7qdG/TAT9xHEd0bntMpKGQ7LWJL7wXF8+a4+iQ4IFURN /BKoqIdWH4LcgyEkYPVcoGDIvVxtv2XlHgMPZ4GT/A8Jgm3X+72IgzVp5Zgwx3PlY1qb h40xSl9b1tic1cITo4JW1cmxgh1BL0JOHVRJ/x8v8qLc93FlkXleVl/Ju3jxbos35OZP FBVdXxV3GMEKKBFo2hsiyciWQ1QMvtpBEW04t6W9uFQXfc/G31iHobayL+afgxqaKHWt /QdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to :mime-version:user-agent:date:message-id:from:cc:references:to :subject; bh=vQuGCXCqr5RusUM25nXFioEHd8Ak4u8U/aI5P0TjlfM=; b=p9tAh3eon4lOblKsriiQUxQqN4bMQkzW+Po6hon5dpWoIwQCSeeQ/t3Bhdlf3z2xXX 704qWtAVpXo55JCe/WkW3pyRsSxq83V7ptl97ZgL8NPeirspoc6dXF5NjuAas4E+mqeG +STCFPtk86t/6wEWnIDOkrQ30Uw9Dr696TG5wfzkoAoTi9YBofEUcDVV7wKWx27Mbe8H 4EuX69kSULroUrkEzrm3uy0iwg9zw3qNlIPY6WSi7OIYF83k+bTSElWXJEoVTen4GrWk Fg6AlqxyF0YvGnCOk/enuV4yozNzjg9C6M7GRApq74o8Yc6KKwHNaD1j8tHUBD0c3SNp KbVw== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k14-20020aa7c38e000000b0046453c36c4csi2866557edq.513.2022.12.06.18.08.54; Tue, 06 Dec 2022 18:09:13 -0800 (PST) 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; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229812AbiLGCCa (ORCPT + 77 others); Tue, 6 Dec 2022 21:02:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229449AbiLGCC1 (ORCPT ); Tue, 6 Dec 2022 21:02:27 -0500 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4420A532EE for ; Tue, 6 Dec 2022 18:02:26 -0800 (PST) Received: from dggpemm100009.china.huawei.com (unknown [172.30.72.56]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4NRgWN1B6tzJqJV; Wed, 7 Dec 2022 10:01:36 +0800 (CST) Received: from [10.174.179.24] (10.174.179.24) by dggpemm100009.china.huawei.com (7.185.36.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 7 Dec 2022 10:02:24 +0800 Subject: Re: [PATCH] riscv: stacktrace: Fix missing the first frame To: Conor Dooley References: <20221205132936.493245-1-liushixin2@huawei.com> CC: Paul Walmsley , Palmer Dabbelt , Albert Ou , Changbin Du , , From: Liu Shixin Message-ID: Date: Wed, 7 Dec 2022 10:02:23 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.179.24] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To dggpemm100009.china.huawei.com (7.185.36.113) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.5 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_MED,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 2022/12/7 0:15, Conor Dooley wrote: > On Mon, Dec 05, 2022 at 09:29:36PM +0800, Liu Shixin wrote: >> When running kfence_test, I found some testcases failed like this: >> >> # test_out_of_bounds_read: EXPECTATION FAILED at mm/kfence/kfence_test.c:346 >> Expected report_matches(&expect) to be true, but is false >> not ok 1 - test_out_of_bounds_read >> >> The corresponding call-trace is: >> >> BUG: KFENCE: out-of-bounds read in kunit_try_run_case+0x38/0x84 >> >> Out-of-bounds read at 0x(____ptrval____) (32B right of kfence-#10): >> kunit_try_run_case+0x38/0x84 >> kunit_generic_run_threadfn_adapter+0x12/0x1e >> kthread+0xc8/0xde >> ret_from_exception+0x0/0xc >> >> The kfence_test using the first frame of call trace to check whether the >> testcase is succeed or not. Patch a7c5c7e8ff78 skip first frame for all >> case, which results the kfence_test failed. Indeed, we only need to skip >> the first frame for case (task==NULL || task==current). >> >> With this patch, the call-trace will be: >> >> BUG: KFENCE: out-of-bounds read in test_out_of_bounds_read+0x88/0x19e >> >> Out-of-bounds read at 0x(____ptrval____) (1B left of kfence-#7): >> test_out_of_bounds_read+0x88/0x19e >> kunit_try_run_case+0x38/0x84 >> kunit_generic_run_threadfn_adapter+0x12/0x1e >> kthread+0xc8/0xde >> ret_from_exception+0x0/0xc >> >> Fixes: a7c5c7e8ff78 ("riscv: eliminate unreliable __builtin_frame_address(1)") > This fixes tag is not right, did checkpatch not warn about it? Yes, there are no warn. Maybe it's because I do have this commit in my local repository. I confused the original commit with my local commit. Thanks for your reminder. I'll fix it as soon as possible. > The correct fixes tag would be: > Fixes: 6a00ef449370 ("riscv: eliminate unreliable __builtin_frame_address(1)") > > Maybe consider automating the creation of fixes tags, like so: > git log -1 --format='Fixes: %h (\"%s\")' Thanks, it seems to be convenient. > > Thanks, > Conor. > >> Signed-off-by: Liu Shixin >> --- >> arch/riscv/kernel/stacktrace.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/arch/riscv/kernel/stacktrace.c b/arch/riscv/kernel/stacktrace.c >> index 08d11a53f39e..5fe2ae4cf135 100644 >> --- a/arch/riscv/kernel/stacktrace.c >> +++ b/arch/riscv/kernel/stacktrace.c >> @@ -30,6 +30,7 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs, >> fp = (unsigned long)__builtin_frame_address(0); >> sp = current_stack_pointer; >> pc = (unsigned long)walk_stackframe; >> + level = -1; >> } else { >> /* task blocked in __switch_to */ >> fp = task->thread.s[0]; >> @@ -41,7 +42,7 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs, >> unsigned long low, high; >> struct stackframe *frame; >> >> - if (unlikely(!__kernel_text_address(pc) || (level++ >= 1 && !fn(arg, pc)))) >> + if (unlikely(!__kernel_text_address(pc) || (level++ >= 0 && !fn(arg, pc)))) >> break; >> >> /* Validate frame pointer */ >> -- >> 2.25.1 >>