linux/drivers/hid
Nathan Chancellor b2b8a75e1d HID: Remove default case statement in fetch_item()
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: 61595012f2 ("HID: simplify code in fetch_item()")
Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Closes: https://lore.kernel.org/20241010222451.GA3571761@thelio-3990X/
Reported-by: Paul E. McKenney <paulmck@kernel.org>
Closes: https://lore.kernel.org/fe8c909e-bf02-4466-b3eb-0a4747df32e3@paulmck-laptop/
Tested-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2024-10-16 10:15:50 +02:00
..
amd-sfh-hid Merge branch 'for-6.12/amd_sfh' into for-linus 2024-09-13 15:20:58 +02:00
bpf HID: bpf: fix cfi stubs for hid_bpf_ops 2024-09-27 20:15:21 +02:00
i2c-hid Merge branch 'for-6.12/elan' into for-linus 2024-09-13 15:27:27 +02:00
intel-ish-hid HID: Fix typo in the comment 2024-10-08 08:53:49 +02:00
surface-hid HID: surface-hid: kbd: Convert to platform remove callback returning void 2024-04-03 13:23:23 +02:00
usbhid HID: Fix typo in the comment 2024-10-08 08:53:49 +02:00
.kunitconfig HID: input: map battery system charging 2022-12-20 15:30:35 +01:00
hid-a4tech.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-accutouch.c
hid-alps.c
hid-apple.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-appleir.c
hid-asus.c HID: Fix typo in the comment 2024-10-08 08:53:49 +02:00
hid-aureal.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-axff.c
hid-belkin.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-betopff.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-bigbenff.c HID: bigbenff: constify fixed up report descriptor 2024-09-05 16:20:56 +02:00
hid-cherry.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-chicony.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-cmedia.c HID: cmedia: constify fixed up report descriptor 2024-08-27 16:30:43 +02:00
hid-core.c HID: Remove default case statement in fetch_item() 2024-10-16 10:15:50 +02:00
hid-corsair.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-cougar.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-cp2112.c hid: cp2112: Use irq_get_trigger_type() helper 2024-09-13 15:39:37 +02:00
hid-creative-sb0540.c
hid-cypress.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-debug.c input: Add support for "Do Not Disturb" 2024-06-07 11:08:07 +02:00
hid-dr.c HID: dr: constify fixed up report descriptor 2024-09-05 16:20:56 +02:00
hid-elan.c
hid-elecom.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-elo.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-emsff.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-evision.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-ezkey.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-ft260.c
hid-gaff.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-gembird.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-generic.c
hid-gfrm.c
hid-glorious.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-goodix-spi.c HID: hid-goodix: drop unsupported and undocumented DT part 2024-09-25 22:49:49 +02:00
hid-google-hammer.c HID: core: add helper for finding a field with a certain usage 2024-08-02 12:42:23 +02:00
hid-google-stadiaff.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-gt683r.c
hid-gyration.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-holtek-kbd.c HID: holtek-kbd: constify fixed up report descriptor 2024-09-05 16:20:56 +02:00
hid-holtek-mouse.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-holtekff.c
hid-hyperv.c HID: hyperv: avoid struct memcpy overrun warning 2023-07-09 12:47:37 +02:00
hid-icade.c
hid-ids.h Merge branch 'for-6.12/elan' into for-linus 2024-09-13 15:27:27 +02:00
hid-input-test.c HID: input: map battery system charging 2022-12-20 15:30:35 +01:00
hid-input.c HID: Ignore battery for all ELAN I2C-HID devices 2024-08-06 08:42:53 +02:00
hid-ite.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-jabra.c
hid-kensington.c HID: Fix spelling mistakes "Kensigton" -> "Kensington" 2024-07-12 18:28:03 +02:00
hid-keytouch.c HID: keytouch: constify fixed up report descriptor 2024-09-05 16:20:56 +02:00
hid-kye.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-lcpower.c HID: add more missing MODULE_DESCRIPTION() macros 2024-07-10 09:11:27 +02:00
hid-led.c
hid-lenovo.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-letsketch.c HID: letsketch: add missing MODULE_DESCRIPTION() macro 2024-06-06 10:51:56 +02:00
hid-lg-g15.c HID: lg-g15: add missing MODULE_DESCRIPTION() macro 2024-06-06 10:52:09 +02:00
hid-lg.c HID: lg: constify fixed up report descriptor 2024-09-06 10:06:02 +02:00
hid-lg.h
hid-lg2ff.c
hid-lg3ff.c HID: hid-lg3ff: remove unused struct lg3ff_device 2024-02-13 11:43:55 +01:00
hid-lg4ff.c
hid-lg4ff.h
hid-lgff.c
hid-logitech-dj.c Merge branch 'for-6.11/module-description' into for-linus 2024-07-16 12:18:28 +02:00
hid-logitech-hidpp.c HID: Fix typo in the comment 2024-10-08 08:53:49 +02:00
hid-macally.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-magicmouse.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-maltron.c HID: maltron: constify fixed up report descriptor 2024-09-05 16:20:56 +02:00
hid-mcp2200.c HID: mcp2200: added driver for GPIOs of MCP2200 2023-11-21 09:27:18 +01:00
hid-mcp2221.c HID: mcp2221: Remove unnecessary semicolon 2024-07-12 18:30:11 +02:00
hid-megaworld.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-mf.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-microsoft.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-monterey.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-multitouch.c Merge branch 'for-6.12/constify-rdesc' into for-linus 2024-09-13 15:14:56 +02:00
hid-nintendo.c Merge branch 'for-6.11/nintendo' into for-linus 2024-07-16 12:24:04 +02:00
hid-nti.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-ntrig.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-nvidia-shield.c HID: nvidia-shield: Add missing check for input_ff_create_memless 2024-05-23 14:17:22 +02:00
hid-ortek.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-penmount.c
hid-petalynx.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-picolcd_backlight.c HID: picoLCD: Use backlight power constants 2024-09-05 10:55:15 +02:00
hid-picolcd_cir.c
hid-picolcd_core.c - Fix-ups 2024-05-22 10:45:12 -07:00
hid-picolcd_debugfs.c
hid-picolcd_fb.c HID: Fix typo in the comment 2024-10-08 08:53:49 +02:00
hid-picolcd_lcd.c HID: picoLCD: Constify lcd_ops 2024-05-03 10:45:34 +01:00
hid-picolcd_leds.c
hid-picolcd.h
hid-pl.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-plantronics.c HID: plantronics: Additional PIDs for double volume key presses quirk 2022-12-20 15:35:21 +01:00
hid-playstation.c HID: hid-playstation: DS4: Update rumble and lightbar together 2024-08-22 00:24:09 +02:00
hid-primax.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-prodikeys.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-pxrc.c HID: pxrc: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-quirks.c HID: Add quirk for Labtec/ODDOR/aikeec handbrake 2023-12-04 16:21:05 +01:00
hid-razer.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-redragon.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-retrode.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-rmi.c HID: rmi: remove #ifdef CONFIG_PM 2023-10-25 18:33:42 +02:00
hid-roccat-arvo.c HID: roccat: make all 'class' structures const 2023-08-14 11:23:35 +02:00
hid-roccat-arvo.h
hid-roccat-common.c
hid-roccat-common.h
hid-roccat-isku.c HID: roccat: Convert sprintf() family to sysfs_emit() family 2024-04-03 13:42:04 +02:00
hid-roccat-isku.h
hid-roccat-kone.c HID: roccat: Convert sprintf() family to sysfs_emit() family 2024-04-03 13:42:04 +02:00
hid-roccat-kone.h
hid-roccat-koneplus.c HID: roccat: Convert sprintf() family to sysfs_emit() family 2024-04-03 13:42:04 +02:00
hid-roccat-koneplus.h
hid-roccat-konepure.c HID: roccat: make all 'class' structures const 2023-08-14 11:23:35 +02:00
hid-roccat-kovaplus.c HID: roccat: Convert sprintf() family to sysfs_emit() family 2024-04-03 13:42:04 +02:00
hid-roccat-kovaplus.h
hid-roccat-lua.c
hid-roccat-lua.h
hid-roccat-pyra.c HID: roccat: Convert sprintf() family to sysfs_emit() family 2024-04-03 13:42:04 +02:00
hid-roccat-pyra.h
hid-roccat-ryos.c HID: roccat: make all 'class' structures const 2023-08-14 11:23:35 +02:00
hid-roccat-savu.c HID: roccat: make all 'class' structures const 2023-08-14 11:23:35 +02:00
hid-roccat-savu.h
hid-roccat.c HID: roccat: make all 'class' structures const 2023-08-14 11:23:35 +02:00
hid-saitek.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-samsung.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-semitek.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-sensor-custom.c HID: Fix typo in the comment 2024-10-08 08:53:49 +02:00
hid-sensor-hub.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-sigmamicro.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-sjoy.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-sony.c HID: sony: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-speedlink.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-steam.c HID: Fix typo in the comment 2024-10-08 08:53:49 +02:00
hid-steelseries.c HID: steelseries: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-sunplus.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-thrustmaster.c
hid-tivo.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-tmff.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-topre.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hid-topseed.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-twinhan.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-u2fzero.c
hid-uclogic-core-test.c HID: uclogic: Fix a work->entry not empty bug in __queue_work() 2023-10-25 16:25:47 +02:00
hid-uclogic-core.c HID: uclogic: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-uclogic-params-test.c HID: uclogic: Fix user-memory-access bug in uclogic_params_ugee_v2_init_event_hooks() 2023-10-25 16:25:47 +02:00
hid-uclogic-params.c HID: uclogic: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-uclogic-params.h HID: uclogic: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-uclogic-rdesc-test.c HID: uclogic: Avoid linking common code into multiple modules 2024-06-19 16:33:10 +02:00
hid-uclogic-rdesc.c HID: uclogic: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-uclogic-rdesc.h HID: uclogic: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-udraw-ps3.c
hid-viewsonic.c HID: viewsonic: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-vivaldi-common.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-vivaldi-common.h
hid-vivaldi.c
hid-vrc2.c HID: vrc2: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-waltop.c HID: waltop: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-wiimote-core.c treewide: Convert del_timer*() to timer_shutdown*() 2022-12-25 13:38:09 -08:00
hid-wiimote-debug.c HID: hid-wiimote-debug.c: Drop error checking for debugfs_create_file 2023-08-14 11:14:42 +02:00
hid-wiimote-modules.c
hid-wiimote.h
hid-winwing.c HID: winwing: constify read-only structs 2024-08-27 18:25:53 +02:00
hid-xiaomi.c HID: xiaomi: constify fixed up report descriptor 2024-09-05 16:20:57 +02:00
hid-xinmo.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-zpff.c HID: add missing MODULE_DESCRIPTION() macros 2024-06-06 10:52:48 +02:00
hid-zydacron.c HID: change return type of report_fixup() to const 2024-08-27 16:29:55 +02:00
hidraw.c HID: hidraw: add HIDIOCREVOKE ioctl 2024-08-29 10:39:37 +02:00
Kconfig HID: hid-goodix: Add Goodix HID-over-SPI driver 2024-08-19 21:14:39 +02:00
Makefile HID: hid-goodix: Add Goodix HID-over-SPI driver 2024-08-19 21:14:39 +02:00
uhid.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
wacom_sys.c HID: wacom: Do not register input devices until after hid_hw_start 2024-02-06 16:12:07 +01:00
wacom_wac.c Merge branch 'for-6.12/wacom' into for-linus 2024-09-13 15:21:44 +02:00
wacom_wac.h HID: wacom: Do not warn about dropped packets for first packet 2024-09-10 23:47:03 +02:00
wacom.h HID: wacom: Remove AES power_supply after extended inactivity 2023-11-29 16:13:21 +01:00