From patchwork Sat Aug 19 08:36:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tiezhu Yang X-Patchwork-Id: 136269 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp2528836vqi; Sun, 20 Aug 2023 08:25:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IER7Op5o6WlNPmf4HPERNF8BShoBdsVrblHdJJLAaJMGPWl1anRZghsR4orlMiOP1qprr7N X-Received: by 2002:a05:6a20:938d:b0:137:23a2:2b3c with SMTP id x13-20020a056a20938d00b0013723a22b3cmr6371492pzh.49.1692545145204; Sun, 20 Aug 2023 08:25:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692545145; cv=none; d=google.com; s=arc-20160816; b=KsjhI3eJNOyqf8qed6Zq4pwUEJtL9ZFrKnzilCDc/2pQpbgjouJWYHeS2/A8hG8vSo Ux0CKImjf0Ahuk0R3LfbD/5rnI6HNy95Wk2EWA4EFNwgNNhMFcaFCujxICEV3AfqNTYM uqcdvV3Bl6j+FBdObvBl8TgACjASLNpVBO9QwL0023QdKgrI9jyDzWH5XeEGmX1oD2Uf nFVtFUe3H0O/gOPte1ex1BNJSU02gsREonG5zU/ll2oX87gvIXq2tTtmVUOvWvq0bJMW MwugFnScCvO4IksgwAbEKAOUQrDGuRpAxYk0Gxz7eMtbBg1psIwTPZnt8VVoSmq6RYIf 3Geg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=bEzDxjjPZ7Jg/fmzhRdW9kNU8/0/z9dPMajmEQ/yJP8=; fh=zoicnZrSUumwSLub61Q/qA0LDg7Zj98grk3RszA4Weg=; b=jHxsRa8e9YYOSTbnQ38HJ7U6D3x2Q+yotpF28EWRMZgma3pGsf61r0t5P1kJsTCjgl eZEDXi4EZfqsha7JKQcqkw1mJipvJAd40SKIH/j15NwwCvCvKIY9cZRoaUp93/GEJiIh /rfTDx4vxnCGUdnTvsiaBTjTIguK0ehKbTnqYxLQG37F9+yBXO062vpvN0T00c115QFQ e5LrnVfaPo0QNUD/w+wYzEKy5Qf6MgNl0Ty6JXm48mVF9HL/G7jeQVJo+Xx4a2qLpGh/ ZfHDGGn8aj9fnPEBYJToAjme9ZLMvTofJaxXD9JvDsmt/uYwUziFe23LhL2AmB3hNuR3 TDgw== 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:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id z132-20020a63338a000000b0056602d6f70esi5319380pgz.68.2023.08.20.08.25.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Aug 2023 08:25:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 1E65024BC9C; Sat, 19 Aug 2023 11:36:47 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230162AbjHSIgc (ORCPT + 99 others); Sat, 19 Aug 2023 04:36:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47166 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230024AbjHSIgb (ORCPT ); Sat, 19 Aug 2023 04:36:31 -0400 Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id EABF07A8EB; Sat, 19 Aug 2023 01:36:27 -0700 (PDT) Received: from loongson.cn (unknown [113.200.148.30]) by gateway (Coremail) with SMTP id _____8Bxd+gJf+BkOhsaAA--.17569S3; Sat, 19 Aug 2023 16:36:25 +0800 (CST) Received: from linux.localdomain (unknown [113.200.148.30]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Cx_c4Hf+BkLDpeAA--.33957S3; Sat, 19 Aug 2023 16:36:25 +0800 (CST) From: Tiezhu Yang To: Thomas Bogendoerfer Cc: "Maciej W. Rozycki" , linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, loongson-kernel@lists.loongnix.cn Subject: [PATCH v4 1/4] MIPS: Add BUG() at the end of nmi_exception_handler() Date: Sat, 19 Aug 2023 16:36:20 +0800 Message-Id: <1692434183-2054-2-git-send-email-yangtiezhu@loongson.cn> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1692434183-2054-1-git-send-email-yangtiezhu@loongson.cn> References: <1692434183-2054-1-git-send-email-yangtiezhu@loongson.cn> X-CM-TRANSID: AQAAf8Cx_c4Hf+BkLDpeAA--.33957S3 X-CM-SenderInfo: p1dqw3xlh2x3gn0dqz5rrqw2lrqou0/ X-Coremail-Antispam: 1Uk129KBj9xXoW7Gr18Cw1Uury7Gr1DAw1rZrc_yoWfCwbEkr 1I9w18Wwn5Ar1Yyr1UuayDWFy3Z3y2gFyfC3WqqrZIkas8CayUG3y8ZrnYqr1kXryvyrs5 Zr9xK3s7uanIkosvyTuYvTs0mTUanT9S1TB71UUUUUJqnTZGkaVYY2UrUUUUj1kv1TuYvT s0mT0YCTnIWjqI5I8CrVACY4xI64kE6c02F40Ex7xfYxn0WfASr-VFAUDa7-sFnT9fnUUI cSsGvfJTRUUUb3xYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4v20x vaj40_Wr0E3s1l1IIY67AEw4v_Jrv_JF1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxS w2x7M28EF7xvwVC0I7IYx2IY67AKxVWUCVW8JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxV WUJVW8JwA2z4x0Y4vEx4A2jsIE14v26F4j6r4UJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_ Gr0_Gr1UM2kKe7AKxVWUXVWUAwAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07AIYI kI8VC2zVCFFI0UMc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUAVWU twAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI4 8JMxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMxCIbckI1I0E14v26r1Y 6r17MI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7 AF67AKxVWUAVWUtwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r1I6r4UMIIF0xvE 2Ix0cI8IcVCY1x0267AKxVWUJVW8JwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcV C2z280aVAFwI0_Gr0_Cr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2Kfnx nUUI43ZEXa7IU8uuWJUUUUU== X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774762218234841565 X-GMAIL-MSGID: 1774762218234841565 In the later patch, we will remove noreturn attribute for die(), in order to make each patch can be built without errors and warnings, just add a noreturn function BUG() at the end of nmi_exception_handler() to make sure it does not return, otherwise there exists the following build error after the later patch: arch/mips/kernel/traps.c:2001:1: error: 'noreturn' function does return [-Werror] Signed-off-by: Tiezhu Yang --- arch/mips/kernel/traps.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 246c6a6..b1b68ce 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -1998,6 +1998,7 @@ void __noreturn nmi_exception_handler(struct pt_regs *regs) regs->cp0_epc = read_c0_errorepc(); die(str, regs); nmi_exit(); + BUG(); } unsigned long ebase; From patchwork Sat Aug 19 08:36:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tiezhu Yang X-Patchwork-Id: 136276 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp2549117vqi; Sun, 20 Aug 2023 09:16:19 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEfUROU3BiH/TKwT5DzqkVqpFBimiM4JDI/gjAeTJr+IM2d7OGSNOpu7MnBp0niClMRG7v4 X-Received: by 2002:a05:6a20:3d83:b0:134:2b44:decf with SMTP id s3-20020a056a203d8300b001342b44decfmr3382703pzi.21.1692548178789; Sun, 20 Aug 2023 09:16:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692548178; cv=none; d=google.com; s=arc-20160816; b=lcB2uWmfnTuIJrcox2AtYJJRrawOp2i+kMhHQUpfuJVRxkMkzG31yv3gw+YoCa4Igj lexy4y7HK3t/xBrL2G48xk/0LtlcFoDNpeqaQhOeLmi7FdE9Q3GwD2mMfPjJCJGSVmDi gq9E/YRydIggwLAyLizEIrW5gboxBy/1iz/H3OdJFufebmGYpIDMGX9jdi9xM3lSub6c qE5+o1JDCrkHdlA0T2KaeWjYAKIr2DGnUGPsi8lnjT2pEzvIxQICZ3M2mKRhO8UuWb0G /oyRbuCTZUEE7j/1JorCzbYwXpER/9+Vh6/OSAl0XjvURTuYuGvqCWbU2cLLGPB6uvd+ Ttkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=TmQkGSj2WmYO8M1EALevoIsNNPzQWfFEnGRCB+7MsLw=; fh=zoicnZrSUumwSLub61Q/qA0LDg7Zj98grk3RszA4Weg=; b=sOd3F2h4t9FWFXDPaZHUjqRYrD2SZ64NrHsQwRjjCfFZyaKWUhRtaa4baBOG79oUpW z1dxkFXIukcMqZeotfLYPm+N/PViTdO14DPMmEMHbUK42EHNVAy14G9zceTXJ7RM53zi evmY0ga3/EZBYzKAY39DyjfsNFwW00hxhSifO8ke4aes00ZUgo6g9lhzgA3JOdCgQOiu xol5WPIW0sL/PtpFmZ1W+PQ3xBibF/jVJ3rpji2u04MvloiwkJb3l3P4XPE2LiBJcGr+ HFqkoORsxNYyBbQ8jHCsu+QRxV625hcAeWumPRS6ZeHjHvEoQb2oJ9w/kaqdto3fm3w4 bs2A== 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:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id kp3-20020a170903280300b001b84335fb90si5310685plb.286.2023.08.20.09.16.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Aug 2023 09:16:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 706F538C771; Sat, 19 Aug 2023 12:12:29 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230297AbjHSIgf (ORCPT + 99 others); Sat, 19 Aug 2023 04:36:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47162 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230036AbjHSIgb (ORCPT ); Sat, 19 Aug 2023 04:36:31 -0400 Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id E60257A8F9; Sat, 19 Aug 2023 01:36:27 -0700 (PDT) Received: from loongson.cn (unknown [113.200.148.30]) by gateway (Coremail) with SMTP id _____8CxbesKf+BkPhsaAA--.51339S3; Sat, 19 Aug 2023 16:36:26 +0800 (CST) Received: from linux.localdomain (unknown [113.200.148.30]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Cx_c4Hf+BkLDpeAA--.33957S4; Sat, 19 Aug 2023 16:36:25 +0800 (CST) From: Tiezhu Yang To: Thomas Bogendoerfer Cc: "Maciej W. Rozycki" , linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, loongson-kernel@lists.loongnix.cn Subject: [PATCH v4 2/4] MIPS: Do not kill the task in die() if notify_die() returns NOTIFY_STOP Date: Sat, 19 Aug 2023 16:36:21 +0800 Message-Id: <1692434183-2054-3-git-send-email-yangtiezhu@loongson.cn> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1692434183-2054-1-git-send-email-yangtiezhu@loongson.cn> References: <1692434183-2054-1-git-send-email-yangtiezhu@loongson.cn> X-CM-TRANSID: AQAAf8Cx_c4Hf+BkLDpeAA--.33957S4 X-CM-SenderInfo: p1dqw3xlh2x3gn0dqz5rrqw2lrqou0/ X-Coremail-Antispam: 1Uk129KBj93XoW7WFy8Zr4kGFWxXw4DJry3Jrc_yoW5JFy5pa 1qkasrGrWkGF4DXryDAF4DCrW3JrZ5K3y2kw10kw4F93ZIvryrXrs7GFWjvw1rtrW0qa4U WFWYvr18tFZ7AFcCm3ZEXasCq-sJn29KB7ZKAUJUUUUr529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUU90b4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r126r13M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4j6r4UJwAaw2AFwI0_Jrv_JF1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0c Ia020Ex4CE44I27wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jw0_ WrylYx0Ex4A2jsIE14v26r4j6F4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwI xGrwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwCFI7km07C267AKxVWU XVWUAwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67 kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVW8JVW5JwCI42IY 6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0x vEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVj vjDU0xZFpf9x07jrPEfUUUUU= X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774765398910408875 X-GMAIL-MSGID: 1774765398910408875 If notify_die() returns NOTIFY_STOP, honor the return value from the handler chain invocation in die() and return without killing the task as, through a debugger, the fault may have been fixed. It makes sense even if ignoring the event will make the system unstable: by allowing access through a debugger it has been compromised already anyway. It makes our port consistent with x86, arm64, riscv and csky. Commit 20c0d2d44029 ("[PATCH] i386: pass proper trap numbers to die chain handlers") may be the earliest of similar changes. Link: https://lore.kernel.org/r/43DDF02E.76F0.0078.0@novell.com/ Signed-off-by: Tiezhu Yang --- arch/mips/include/asm/ptrace.h | 2 +- arch/mips/kernel/traps.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/mips/include/asm/ptrace.h b/arch/mips/include/asm/ptrace.h index daf3cf2..aee8e0a 100644 --- a/arch/mips/include/asm/ptrace.h +++ b/arch/mips/include/asm/ptrace.h @@ -159,7 +159,7 @@ static inline long regs_return_value(struct pt_regs *regs) extern asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall); extern asmlinkage void syscall_trace_leave(struct pt_regs *regs); -extern void die(const char *, struct pt_regs *) __noreturn; +extern void die(const char *, struct pt_regs *); static inline void die_if_kernel(const char *str, struct pt_regs *regs) { diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index b1b68ce..8e528a8 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -391,16 +391,15 @@ void show_registers(struct pt_regs *regs) static DEFINE_RAW_SPINLOCK(die_lock); -void __noreturn die(const char *str, struct pt_regs *regs) +void die(const char *str, struct pt_regs *regs) { static int die_counter; - int sig = SIGSEGV; + int ret; oops_enter(); - if (notify_die(DIE_OOPS, str, regs, 0, current->thread.trap_nr, - SIGSEGV) == NOTIFY_STOP) - sig = 0; + ret = notify_die(DIE_OOPS, str, regs, 0, + current->thread.trap_nr, SIGSEGV); console_verbose(); raw_spin_lock_irq(&die_lock); @@ -422,7 +421,8 @@ void __noreturn die(const char *str, struct pt_regs *regs) if (regs && kexec_should_crash(current)) crash_kexec(regs); - make_task_dead(sig); + if (ret != NOTIFY_STOP) + make_task_dead(SIGSEGV); } extern struct exception_table_entry __start___dbe_table[];