kernel_optimize_test/drivers/hid
Ping Cheng 797c128d3c HID: wacom: Fix memory leakage caused by kfifo_alloc
commit 37309f47e2f5674f3e86cb765312ace42cfcedf5 upstream.

As reported by syzbot below, kfifo_alloc'd memory would not be freed
if a non-zero return value is triggered in wacom_probe. This patch
creates and uses devm_kfifo_alloc to allocate and free itself.

BUG: memory leak
unreferenced object 0xffff88810dc44a00 (size 512):
  comm "kworker/1:2", pid 3674, jiffies 4294943617 (age 14.100s)
  hex dump (first 32 bytes):
   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
   [<0000000023e1afac>] kmalloc_array include/linux/slab.h:592 [inline]
   [<0000000023e1afac>] __kfifo_alloc+0xad/0x100 lib/kfifo.c:43
   [<00000000c477f737>] wacom_probe+0x1a1/0x3b0 drivers/hid/wacom_sys.c:2727
   [<00000000b3109aca>] hid_device_probe+0x16b/0x210 drivers/hid/hid-core.c:2281
   [<00000000aff7c640>] really_probe+0x159/0x480 drivers/base/dd.c:554
   [<00000000778d0bc3>] driver_probe_device+0x84/0x100 drivers/base/dd.c:738
   [<000000005108dbb5>] __device_attach_driver+0xee/0x110 drivers/base/dd.c:844
   [<00000000efb7c59e>] bus_for_each_drv+0xb7/0x100 drivers/base/bus.c:431
   [<0000000024ab1590>] __device_attach+0x122/0x250 drivers/base/dd.c:912
   [<000000004c7ac048>] bus_probe_device+0xc6/0xe0 drivers/base/bus.c:491
   [<00000000b93050a3>] device_add+0x5ac/0xc30 drivers/base/core.c:2936
   [<00000000e5b46ea5>] hid_add_device+0x151/0x390 drivers/hid/hid-core.c:2437
   [<00000000c6add147>] usbhid_probe+0x412/0x560 drivers/hid/usbhid/hid-core.c:1407
   [<00000000c33acdb4>] usb_probe_interface+0x177/0x370 drivers/usb/core/driver.c:396
   [<00000000aff7c640>] really_probe+0x159/0x480 drivers/base/dd.c:554
   [<00000000778d0bc3>] driver_probe_device+0x84/0x100 drivers/base/dd.c:738
   [<000000005108dbb5>] __device_attach_driver+0xee/0x110 drivers/base/dd.c:844

https://syzkaller.appspot.com/bug?extid=5b49c9695968d7250a26

Reported-by: syzbot+5b49c9695968d7250a26@syzkaller.appspotmail.com
Signed-off-by: Ping Cheng <ping.cheng@wacom.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-17 14:16:59 +01:00
..
i2c-hid HID: i2c-hid: add Vero K147 to descriptor override 2020-12-26 16:02:43 +01:00
intel-ish-hid pci-v5.10-changes 2020-10-22 12:41:00 -07:00
usbhid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid 2020-08-25 11:13:29 -07:00
hid-a4tech.c
hid-accutouch.c
hid-alps.c HID: alps: clean up indentation issue 2020-09-22 11:19:55 +02:00
hid-apple.c HID: apple: Add support for Matias wireless keyboard 2020-08-17 12:17:52 +02:00
hid-appleir.c HID: appleir: Use devm_kzalloc() instead of kzalloc() 2020-03-13 17:33:11 +01:00
hid-asus.c HID: asus: Fix mute and touchpad-toggle keys on Medion Akoya E1239T 2020-05-06 11:40:03 +02:00
hid-aureal.c
hid-axff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-belkin.c
hid-betopff.c
hid-bigbenff.c HID: hid-bigbenff: fix race condition for scheduled work during removal 2020-02-18 14:43:51 +01:00
hid-cherry.c
hid-chicony.c
hid-cmedia.c
hid-core.c Merge branch 'for-5.9/upstream-fixes' into for-linus 2020-10-15 20:41:43 +02:00
hid-corsair.c
hid-cougar.c HID: cougar: Constify cougar_id_table 2020-08-17 11:38:49 +02:00
hid-cp2112.c HID: cp2112: Use irqchip template 2020-08-17 11:59:09 +02:00
hid-creative-sb0540.c HID: sb0540: add support for Creative SB0540 IR receivers 2019-09-03 16:52:04 +02:00
hid-cypress.c HID: cypress: Support Varmilo Keyboards' media hotkeys 2020-10-23 13:23:44 +02:00
hid-debug.c HID: hid-debug: fix nonblocking read semantics wrt EIO/ERESTARTSYS 2020-09-09 08:47:38 +02:00
hid-dr.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-elan.c HID: elan: Fix memleak in elan_input_configured 2020-09-01 09:11:24 +02:00
hid-elecom.c
hid-elo.c
hid-emsff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-ezkey.c
hid-gaff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-gembird.c
hid-generic.c
hid-gfrm.c
hid-glorious.c HID: Add driver fixing Glorious PC Gaming Race mouse report descriptor 2020-03-18 13:36:21 +01:00
hid-google-hammer.c HID: google: add moonball USB id 2020-03-16 14:51:05 +01:00
hid-gt683r.c
hid-gyration.c
hid-holtek-kbd.c
hid-holtek-mouse.c
hid-holtekff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-hyperv.c HID: hyperv: Use VMBUS_RING_SIZE() for ringbuffer sizes 2020-09-28 08:57:28 +00:00
hid-icade.c
hid-ids.h HID: Add Logitech Dinovo Edge battery quirk 2020-11-12 16:01:13 +01:00
hid-input.c HID: Add Logitech Dinovo Edge battery quirk 2020-11-12 16:01:13 +01:00
hid-ite.c HID: ite: Replace ABS_MISC 120/121 events with touchpad on/off keypresses 2020-10-22 13:42:34 +02:00
hid-jabra.c
hid-kensington.c
hid-keytouch.c
hid-kye.c
hid-lcpower.c
hid-led.c
hid-lenovo.c HID: lenovo: Fix spurious F23 key press report during resume from suspend 2020-07-07 12:42:27 +02:00
hid-lg-g15.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
hid-lg.c
hid-lg.h
hid-lg2ff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-lg3ff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-lg4ff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-lg4ff.h
hid-lgff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-logitech-dj.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid 2020-11-22 14:36:06 -08:00
hid-logitech-hidpp.c HID: logitech-dj: Fix Dinovo Mini when paired with a MX5x00 receiver 2020-11-19 16:27:51 +01:00
hid-macally.c HID: macally: Constify macally_id_table 2020-08-17 11:38:49 +02:00
hid-magicmouse.c HID: magicmouse: do not set up autorepeat 2020-06-16 17:34:14 +02:00
hid-maltron.c
hid-mcp2221.c HID: mcp2221: Fix GPIO output handling 2020-11-05 11:16:53 +01:00
hid-mf.c
hid-microsoft.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid 2020-09-02 12:55:46 -07:00
hid-monterey.c
hid-multitouch.c HID: multitouch: Lenovo X1 Tablet Gen2 trackpoint and buttons 2020-09-22 12:09:54 +02:00
hid-nti.c
hid-ntrig.c
hid-ortek.c
hid-penmount.c
hid-petalynx.c
hid-picolcd_backlight.c
hid-picolcd_cir.c media: rc: harmonize infrared durations to microseconds 2020-09-03 16:18:55 +02:00
hid-picolcd_core.c
hid-picolcd_debugfs.c
hid-picolcd_fb.c Merge branch 'for-5.7/appleir' into for-linus 2020-04-01 12:26:12 +02:00
hid-picolcd_lcd.c
hid-picolcd_leds.c
hid-picolcd.h
hid-pl.c
hid-plantronics.c
hid-primax.c
hid-prodikeys.c HID: prodikeys: make array keys static const, makes object smaller 2019-10-01 16:21:04 +02:00
hid-quirks.c HID: add HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE for Gamevice devices 2020-11-09 12:55:18 +01:00
hid-redragon.c
hid-retrode.c
hid-rmi.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2020-10-23 16:16:31 -07:00
hid-roccat-arvo.c
hid-roccat-arvo.h
hid-roccat-common.c
hid-roccat-common.h
hid-roccat-isku.c
hid-roccat-isku.h
hid-roccat-kone.c Merge branch 'for-5.9/upstream-fixes' into for-linus 2020-10-15 20:41:43 +02:00
hid-roccat-kone.h
hid-roccat-koneplus.c
hid-roccat-koneplus.h
hid-roccat-konepure.c
hid-roccat-kovaplus.c
hid-roccat-kovaplus.h
hid-roccat-lua.c
hid-roccat-lua.h
hid-roccat-pyra.c
hid-roccat-pyra.h
hid-roccat-ryos.c
hid-roccat-savu.c
hid-roccat-savu.h
hid-roccat.c
hid-saitek.c
hid-samsung.c
hid-sensor-custom.c HID: hid-sensor-custom: Use scnprintf() for avoiding potential buffer overflow 2020-03-11 11:58:58 +01:00
hid-sensor-hub.c HID: hid-sensor-hub: Fix issue with devices with no report ID 2020-11-05 11:09:28 +01:00
hid-sjoy.c
hid-sony.c HID: sony: Fix for broken buttons on DS3 USB dongles 2020-05-26 11:00:49 +02:00
hid-speedlink.c
hid-steam.c HID: steam: fixes race in handling device list. 2020-06-19 09:21:21 +02:00
hid-steelseries.c
hid-sunplus.c
hid-tivo.c
hid-tmff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-topseed.c
hid-twinhan.c
hid-u2fzero.c
hid-uclogic-core.c HID: uclogic: Add ID for Trust Flex Design Tablet 2020-10-22 11:52:02 +02:00
hid-uclogic-params.c HID: uclogic: Add ID for Trust Flex Design Tablet 2020-10-22 11:52:02 +02:00
hid-uclogic-params.h
hid-uclogic-rdesc.c
hid-uclogic-rdesc.h
hid-udraw-ps3.c HID: udraw-ps3: Replace HTTP links with HTTPS ones 2020-07-20 12:24:41 +02:00
hid-viewsonic.c
hid-vivaldi.c HID: add vivaldi HID driver 2020-09-30 22:44:26 +02:00
hid-waltop.c
hid-wiimote-core.c HID: wiimote: narrow spinlock range in wiimote_hid_event() 2020-09-07 16:03:51 +02:00
hid-wiimote-debug.c
hid-wiimote-modules.c HID: Wiimote: Treat the d-pad as an analogue stick 2020-06-19 14:17:22 +02:00
hid-wiimote.h HID: Wiimote: Treat the d-pad as an analogue stick 2020-06-19 14:17:22 +02:00
hid-xinmo.c
hid-zpff.c HID: Fix assumption that devices have inputs 2019-10-03 15:36:40 -04:00
hid-zydacron.c
hidraw.c Merge branch 'for-5.6/hidraw' into for-linus 2020-01-27 15:49:30 +01:00
Kconfig HID: add vivaldi HID driver 2020-09-30 22:44:26 +02:00
Makefile HID: add vivaldi HID driver 2020-09-30 22:44:26 +02:00
uhid.c HID: hidraw, uhid: Always report EPOLLOUT 2020-01-10 15:34:28 +01:00
wacom_sys.c HID: wacom: Fix memory leakage caused by kfifo_alloc 2021-01-17 14:16:59 +01:00
wacom_wac.c Merge branch 'for-5.9/upstream-fixes' into for-linus 2020-10-15 20:41:43 +02:00
wacom_wac.h
wacom.h HID: wacom: generic: Treat serial number and related fields as unsigned 2019-11-06 21:37:29 +01:00