On Fri, Feb 26, 2021 at 9:16 AM 'Pratyush Yadav' via Clang Built Linux <clang-built-linux@xxxxxxxxxxxxxxxx> wrote: > > Hi, > > On 25/02/21 01:55PM, Arnd Bergmann wrote: > > From: Arnd Bergmann <arnd@xxxxxxxx> > > > > Building this file with clang leads to a an unreachable code path > > causing a warning from objtool: > > > > drivers/spi/spi-rockchip.o: warning: objtool: rockchip_spi_transfer_one()+0x2e0: sibling call from callable instruction with modified stack frame > > > > Use BUG() instead of unreachable() to avoid the undefined behavior > > if it does happen. > > > > Fixes: 65498c6ae241 ("spi: rockchip: support 4bit words") > > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > > --- > > drivers/spi/spi-rockchip.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/spi/spi-rockchip.c b/drivers/spi/spi-rockchip.c > > index 936ef54e0903..972beac1169a 100644 > > --- a/drivers/spi/spi-rockchip.c > > +++ b/drivers/spi/spi-rockchip.c > > @@ -521,7 +521,7 @@ static void rockchip_spi_config(struct rockchip_spi *rs, > > * ctlr->bits_per_word_mask, so this shouldn't > > * happen > > */ > > - unreachable(); > > + BUG(); > > checkpatch says: > > Avoid crashing the kernel - try using WARN_ON & recovery code rather > than BUG() or BUG_ON() > > Which makes sense to me. This is not something bad enough to justify > crashing the kernel. I thought about rewriting it more thoroughly when I wrote the patch, but couldn't come up with a good alternative, so I did the simplest change in this direction, replacing the silent crash with a loud one. Should we just dev_warn() and return instead, hoping that it won't do more harm? The backtrace from WARN_ON() probably doesn't help here. Arnd