Message ID | f860f3a1c1a53c437a99abc53e8f1a798aef6881.1675461757.git.jpoimboe@kernel.org |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1080491wrn; Fri, 3 Feb 2023 14:08:41 -0800 (PST) X-Google-Smtp-Source: AK7set+aAnmpoxcKhLUU3beKzQUjIuOq2k+VYd5lqTR61aZLcff/MxIMGkH91NjrDuMC56rZN51w X-Received: by 2002:a62:1dc2:0:b0:592:4502:fb0 with SMTP id d185-20020a621dc2000000b0059245020fb0mr10940504pfd.0.1675462120877; Fri, 03 Feb 2023 14:08:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675462120; cv=none; d=google.com; s=arc-20160816; b=iNgcErg0SaJKmCsbX0j4Mt/tZHbgcWhYEIJn7C+6WUUsXx9N08VpRc7uoT0E+osE4r S5D2/CyRnJVr3vuphnj5DnQGgR00kvHjk2EeV9De40qtfbj3hbCZv0+/hq6uCT+MpXvc r/erfSwJo5dHKUun+lXOE5kfjxKAuqg6T+GBAOdgsdzdAZzmPaXv8s/bwagA2UKMW2vc eOSf3p1vqMvM1hz2zpTZjKqz+tA514wYiwE+JW86uVmk5zrRNe/vz3xLcxEP26pvXSLa ykuT6iPX4C+3wRnKtnReEU1t+THZu1OipUqYS3EXw6rJ6EOHNYPdRnhCSEyBsBpcbXOu 87Sw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=hlV1IOqgC/IRgshViIND178CsmpcnlF2zLWoTjFMsPk=; b=cUGXFox/C4blhX0AySMV5W9nIFqhBBzBK0BWdyKDHWguarDNkZkFgeIRiEJSwcV6fd CcQbCLIhhAVnphkr4EQeTImYhuE5zW3IxlpLPEngQr2w8n0Phxd8pKfEUoSAcUPsAUZm wL8u//yQw2KqJM/lpIq/+JoCmsmKR9bpiILkw8XkxGFRMuGKg+67S05APDIFXod77+eL 2yyjuLeyhBpUjJt200ZW774nuiSQzi2NevTdFe/cUl/zcAjfWszTKqrXtum2abd7Nr+6 4va92ZzNOdGceVJ1yV8aBpGGIAweACvpPF5wi+b39m2es7z2Cp1s/0pYEvytjR5EbW/K G62Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=YE3hiGii; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x16-20020a056a00189000b0058db504f977si4141392pfh.294.2023.02.03.14.08.27; Fri, 03 Feb 2023 14:08:40 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=YE3hiGii; 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 S233187AbjBCWGE (ORCPT <rfc822;il.mystafa@gmail.com> + 99 others); Fri, 3 Feb 2023 17:06:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56490 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233935AbjBCWFy (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Fri, 3 Feb 2023 17:05:54 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47833AB5DE; Fri, 3 Feb 2023 14:05:53 -0800 (PST) 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 ams.source.kernel.org (Postfix) with ESMTPS id EF6F5B82C32; Fri, 3 Feb 2023 22:05:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D9FD4C4339C; Fri, 3 Feb 2023 22:05:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675461950; bh=bmnsttKFT2vt8nGO3aA3GL09+qkDKrC1WcjQyEBFYe0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YE3hiGiiwH26Qr/K5PJOS+hNPeo3XuuCzqosW8oIqc0E3EJH0XGyBuNtXvJJ+SDrq JWmWDQWlcs+rYmML0rmuGU0SgDAh8zsWcPGWR/IeV9EOploqiQQdVC6qQ3Mjd98Kkp qRir1VJnOqGiyahlKVWc3Q3eeabaKpe08lyVFr75tS/LESPPL1b4z/fZbqVUOKw35u FmxMJjAAFN4EIAdXWaTf/CNUOG+n3QxS4Ayq9xfsJ63ylTjRXx8FH6ZqSSf9B9zOjo Do4XcGJmVDfvZbC1YhgBETGpx9fbFkRBfVkORFUvu04PjtpY5bUIjcbGas4InxOYCL W7lQoYSaYIxBA== From: Josh Poimboeuf <jpoimboe@kernel.org> To: linux-kernel@vger.kernel.org Cc: jgross@suse.com, richard.henderson@linaro.org, ink@jurassic.park.msu.ru, mattst88@gmail.com, linux-alpha@vger.kernel.org, linux@armlinux.org.uk, linux-arm-kernel@lists.infradead.org, catalin.marinas@arm.com, will@kernel.org, guoren@kernel.org, linux-csky@vger.kernel.org, linux-ia64@vger.kernel.org, chenhuacai@kernel.org, kernel@xen0n.name, loongarch@lists.linux.dev, f.fainelli@gmail.com, bcm-kernel-feedback-list@broadcom.com, tsbogend@alpha.franken.de, linux-mips@vger.kernel.org, jiaxun.yang@flygoat.com, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org, ysato@users.sourceforge.jp, dalias@libc.org, linux-sh@vger.kernel.org, davem@davemloft.net, sparclinux@vger.kernel.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, linux-xtensa@linux-xtensa.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, bristot@redhat.com, vschneid@redhat.com, paulmck@kernel.org Subject: [PATCH 05/22] csky/cpu: Make sure arch_cpu_idle_dead() doesn't return Date: Fri, 3 Feb 2023 14:05:14 -0800 Message-Id: <f860f3a1c1a53c437a99abc53e8f1a798aef6881.1675461757.git.jpoimboe@kernel.org> X-Mailer: git-send-email 2.39.0 In-Reply-To: <cover.1675461757.git.jpoimboe@kernel.org> References: <cover.1675461757.git.jpoimboe@kernel.org> MIME-Version: 1.0 Content-type: text/plain Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756849368788201136?= X-GMAIL-MSGID: =?utf-8?q?1756849368788201136?= |
Series |
cpu,sched: Mark arch_cpu_idle_dead() __noreturn
|
|
Commit Message
Josh Poimboeuf
Feb. 3, 2023, 10:05 p.m. UTC
arch_cpu_idle_dead() doesn't return. Make that more explicit with a
BUG().
BUG() is preferable to unreachable() because BUG() is a more explicit
failure mode and avoids undefined behavior like falling off the edge of
the function into whatever code happens to be next.
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
---
arch/csky/kernel/smp.c | 2 ++
1 file changed, 2 insertions(+)
Comments
On Sat, Feb 4, 2023 at 6:05 AM Josh Poimboeuf <jpoimboe@kernel.org> wrote: > > arch_cpu_idle_dead() doesn't return. Make that more explicit with a > BUG(). > > BUG() is preferable to unreachable() because BUG() is a more explicit > failure mode and avoids undefined behavior like falling off the edge of > the function into whatever code happens to be next. > > Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> > --- > arch/csky/kernel/smp.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/csky/kernel/smp.c b/arch/csky/kernel/smp.c > index b45d1073307f..0ec20efaf5fd 100644 > --- a/arch/csky/kernel/smp.c > +++ b/arch/csky/kernel/smp.c > @@ -317,5 +317,7 @@ void arch_cpu_idle_dead(void) > "jmpi csky_start_secondary" > : > : "r" (secondary_stack)); > + > + BUG(); Why not: diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index f26ab2675f7d..1d3bf903add2 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -285,6 +285,7 @@ static void do_idle(void) tick_nohz_idle_stop_tick(); cpuhp_report_idle_dead(); arch_cpu_idle_dead(); + BUG(); } arch_cpu_idle_enter(); > } > #endif > -- > 2.39.0 >
On Sat, Feb 04, 2023 at 09:12:31AM +0800, Guo Ren wrote: > On Sat, Feb 4, 2023 at 6:05 AM Josh Poimboeuf <jpoimboe@kernel.org> wrote: > > > > arch_cpu_idle_dead() doesn't return. Make that more explicit with a > > BUG(). > > > > BUG() is preferable to unreachable() because BUG() is a more explicit > > failure mode and avoids undefined behavior like falling off the edge of > > the function into whatever code happens to be next. > > > > Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> > > --- > > arch/csky/kernel/smp.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/arch/csky/kernel/smp.c b/arch/csky/kernel/smp.c > > index b45d1073307f..0ec20efaf5fd 100644 > > --- a/arch/csky/kernel/smp.c > > +++ b/arch/csky/kernel/smp.c > > @@ -317,5 +317,7 @@ void arch_cpu_idle_dead(void) > > "jmpi csky_start_secondary" > > : > > : "r" (secondary_stack)); > > + > > + BUG(); > Why not: > diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c > index f26ab2675f7d..1d3bf903add2 100644 > --- a/kernel/sched/idle.c > +++ b/kernel/sched/idle.c > @@ -285,6 +285,7 @@ static void do_idle(void) > tick_nohz_idle_stop_tick(); > cpuhp_report_idle_dead(); > arch_cpu_idle_dead(); > + BUG(); Without the BUG() in csky arch_cpu_idle_dead(), the compiler will warn about arch_cpu_idle_dead() returning, because it's marked __noreturn but doesn't clearly return (as far as the compiler knows). And we want it marked __noreturn so we'll be more likely to catch such bugs at build time. And as a bonus we get better code generation and clearer code semantics which helps both humans and tooling understand the intent of the code.
On Sat, Feb 4, 2023 at 10:29 AM Josh Poimboeuf <jpoimboe@kernel.org> wrote: > > On Sat, Feb 04, 2023 at 09:12:31AM +0800, Guo Ren wrote: > > On Sat, Feb 4, 2023 at 6:05 AM Josh Poimboeuf <jpoimboe@kernel.org> wrote: > > > > > > arch_cpu_idle_dead() doesn't return. Make that more explicit with a > > > BUG(). > > > > > > BUG() is preferable to unreachable() because BUG() is a more explicit > > > failure mode and avoids undefined behavior like falling off the edge of > > > the function into whatever code happens to be next. > > > > > > Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> > > > --- > > > arch/csky/kernel/smp.c | 2 ++ > > > 1 file changed, 2 insertions(+) > > > > > > diff --git a/arch/csky/kernel/smp.c b/arch/csky/kernel/smp.c > > > index b45d1073307f..0ec20efaf5fd 100644 > > > --- a/arch/csky/kernel/smp.c > > > +++ b/arch/csky/kernel/smp.c > > > @@ -317,5 +317,7 @@ void arch_cpu_idle_dead(void) > > > "jmpi csky_start_secondary" > > > : > > > : "r" (secondary_stack)); > > > + > > > + BUG(); > > Why not: > > diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c > > index f26ab2675f7d..1d3bf903add2 100644 > > --- a/kernel/sched/idle.c > > +++ b/kernel/sched/idle.c > > @@ -285,6 +285,7 @@ static void do_idle(void) > > tick_nohz_idle_stop_tick(); > > cpuhp_report_idle_dead(); > > arch_cpu_idle_dead(); > > + BUG(); > > Without the BUG() in csky arch_cpu_idle_dead(), the compiler will warn > about arch_cpu_idle_dead() returning, because it's marked __noreturn but > doesn't clearly return (as far as the compiler knows). > > And we want it marked __noreturn so we'll be more likely to catch such > bugs at build time. > > And as a bonus we get better code generation and clearer code semantics > which helps both humans and tooling understand the intent of the code. Thx for the clarification. Acked-by: Guo Ren <guoren@kernel.org> > > -- > Josh
diff --git a/arch/csky/kernel/smp.c b/arch/csky/kernel/smp.c index b45d1073307f..0ec20efaf5fd 100644 --- a/arch/csky/kernel/smp.c +++ b/arch/csky/kernel/smp.c @@ -317,5 +317,7 @@ void arch_cpu_idle_dead(void) "jmpi csky_start_secondary" : : "r" (secondary_stack)); + + BUG(); } #endif