[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHk-=wgW6yfsLUtepANX2PVkADR_7WDzk05YVhtw1ZBmDEGT2Q@mail.gmail.com>
Date: Wed, 16 Jun 2021 09:29:00 -0700
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Tom Rix <trix@...hat.com>
Cc: Zheng Zengkai <zhengzengkai@...wei.com>,
Randy Dunlap <rdunlap@...radead.org>,
David Howells <dhowells@...hat.com>,
Hulk Robot <hulkci@...wei.com>, linux-afs@...ts.infradead.org,
Marc Dionne <marc.dionne@...istor.com>,
linux-fsdevel <linux-fsdevel@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] afs: fix no return statement in function returning non-void
On Wed, Jun 16, 2021 at 9:22 AM Tom Rix <trix@...hat.com> wrote:
>
> to fix, add an unreachable() to the generic BUG()
>
> diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
> index f152b9bb916f..b250e06d7de2 100644
> --- a/include/asm-generic/bug.h
> +++ b/include/asm-generic/bug.h
> @@ -177,7 +177,10 @@ void __warn(const char *file, int line, void
> *caller, unsigned taint,
>
> #else /* !CONFIG_BUG */
> #ifndef HAVE_ARCH_BUG
> -#define BUG() do {} while (1)
> +#define BUG() do { \
> + do {} while (1); \
> + unreachable(); \
> + } while (0)
> #endif
I'm a bit surprised that the compiler doesn't make that code after an
infinite loop automatically be marked "unreachable". But at the same I
can imagine the compiler doing some checks without doing real flow
analysis, and doing "oh, that conditional branch is unconditional".
So this patch at least makes sense to me and I have no objections to
it, even if it makes me go "silly compiler, we shouldn't have to tell
you this".
So Ack from me on this.
Linus
Powered by blists - more mailing lists