linux/drivers/input/joystick
Tetsuo Handa b533b9d3a0 Input: iforce - wake up after clearing IFORCE_XMIT_RUNNING flag
commit 98e0121570 upstream.

syzbot is reporting hung task at __input_unregister_device() [1], for
iforce_close() waiting at wait_event_interruptible() with dev->mutex held
is blocking input_disconnect_device() from __input_unregister_device().

It seems that the cause is simply that commit c2b27ef672 ("Input:
iforce - wait for command completion when closing the device") forgot to
call wake_up() after clear_bit().

Fix this problem by introducing a helper that calls clear_bit() followed
by wake_up_all().

Reported-by: syzbot <syzbot+deb6abc36aad4008f407@syzkaller.appspotmail.com>
Fixes: c2b27ef672 ("Input: iforce - wait for command completion when closing the device")
Tested-by: syzbot <syzbot+deb6abc36aad4008f407@syzkaller.appspotmail.com>
Suggested-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
Co-developed-by: Hillf Danton <hdanton@sina.com>
Signed-off-by: Hillf Danton <hdanton@sina.com>
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Link: https://lore.kernel.org/r/887021c3-4f13-40ce-c8b9-aa6e09faa3a7@I-love.SAKURA.ne.jp
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2022-09-08 11:24:01 +02:00
..
iforce Input: iforce - wake up after clearing IFORCE_XMIT_RUNNING flag 2022-09-08 11:24:01 +02:00
a3d.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
adc-joystick.c Input: joystick - add ADC attached joystick driver. 2020-09-28 16:26:11 -07:00
adi.c Input: adi - remove redundant variable z 2022-03-20 22:02:00 -07:00
amijoy.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
analog.c Merge branch 'next' into for-linus 2021-11-11 21:58:54 -08:00
as5011.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cobra.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
db9.c Input: Use fallthrough pseudo-keyword 2020-07-07 11:25:54 -07:00
fsia6b.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
gamecon.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
gf2k.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
grip.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
grip_mp.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
guillemot.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
interact.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
joydump.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
Kconfig Input: raspberrypi-ts - add missing HAS_IOMEM dependency 2022-05-31 14:10:03 -07:00
magellan.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
Makefile Input: add Raspberry Pi Sense HAT joystick driver 2022-04-24 18:25:02 -07:00
maplecontrol.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
n64joy.c Input: n64joy - fix return value check in n64joy_probe() 2021-03-09 21:41:28 -08:00
psxpad-spi.c Input: psxpad-spi - switch to using polled mode of input devices 2019-10-29 17:13:36 -07:00
pxrc.c Input: pxrc - flatten probe code 2018-07-25 19:04:19 +00:00
qwiic-joystick.c Input: add SparkFun Qwiic Joystick driver 2021-06-18 21:28:20 -07:00
sensehat-joystick.c Input: add Raspberry Pi Sense HAT joystick driver 2022-04-24 18:25:02 -07:00
sidewinder.c Input: Fix fall-through warning for Clang 2021-07-06 16:26:17 -05:00
spaceball.c Input: spaceball - fix parsing of movement data packets 2021-12-30 21:09:29 -08:00
spaceorb.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
stinger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 31 2019-05-24 17:27:10 +02:00
tmdc.c Input: tmdc - fix spelling mistake "Millenium" -> "Millennium" 2021-09-20 21:59:50 -07:00
turbografx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
twidjoy.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
walkera0701.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
warrior.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 31 2019-05-24 17:27:10 +02:00
xpad.c Input: xbox - correct the name for Xbox Series S|X controller 2022-02-15 19:58:05 -08:00
zhenhua.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00