On Tue, 15 Oct 2024, Nathan Chancellor wrote: > A default case statement with a bare unreachable() was recently added to > fetch_item(), which by itself introduces undefined behavior. objtool > points this out with a few different warnings, depending on > configuration and compiler: > > vmlinux.o: warning: objtool: fetch_item() falls through to next function ... > > vmlinux.o: warning: objtool: hid_open_report() falls through to next function hid_parser_main() > vmlinux.o: warning: objtool: hid_scan_report() falls through to next function hid_allocate_device() > > vmlinux.o: warning: objtool: hid_open_report+0x21b: can't find jump dest instruction at .text.hid_open_report+0x40f > > Replacing unreachable() with BUG() is a typical fix to eliminate the > undefined behavior and make the default case well defined. However, in > this case, all possible values are enumerated in the switch statement, > so the default case can never actually happen, as proven with the > comment next to the item->size assignment. Just remove the default case > altogether, as the return statement would still be valid if the switch > statement were ever to be skipped. > > Fixes: 61595012f280 ("HID: simplify code in fetch_item()") > Suggested-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> > Closes: https://lore.kernel.org/20241010222451.GA3571761@thelio-3990X/ > Reported-by: Paul E. McKenney <paulmck@xxxxxxxxxx> > Closes: https://lore.kernel.org/fe8c909e-bf02-4466-b3eb-0a4747df32e3@paulmck-laptop/ > Tested-by: Paul E. McKenney <paulmck@xxxxxxxxxx> > Signed-off-by: Nathan Chancellor <nathan@xxxxxxxxxx> Applied, thanks. -- Jiri Kosina SUSE Labs