On Wed, Jun 16, 2021 at 9:22 AM Tom Rix <trix@xxxxxxxxxx> 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