linux/drivers/usb/misc
Alan Stern 5133454a1f USB: yurex: Fix protection fault after device removal
commit ef61eb43ad upstream.

The syzkaller USB fuzzer found a general-protection-fault bug in the
yurex driver.  The fault occurs when a device has been unplugged; the
driver's interrupt-URB handler logs an error message referring to the
device by name, after the device has been unregistered and its name
deallocated.

This problem is caused by the fact that the interrupt URB isn't
cancelled until the driver's private data structure is released, which
can happen long after the device is gone.  The cure is to make sure
that the interrupt URB is killed before yurex_disconnect() returns;
this is exactly the sort of thing that usb_poison_urb() was meant for.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-and-tested-by: syzbot+2eb9121678bdb36e6d57@syzkaller.appspotmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2019-08-13 12:39:15 +01:00
..
sisusbvga USB: sisusb: add device id for Magic Control USB video 2014-10-05 13:40:57 -07:00
adutux.c usb: misc: adutux: remove redundant error check on copy_to_user return code 2017-06-05 21:17:02 +01:00
appledisplay.c usb: appledisplay: Add 27" Apple Cinema Display 2019-02-11 17:54:19 +00:00
cypress_cy7c63.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
cytherm.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
ehset.c usb: ehci: Add support for SINGLE_STEP_SET_FEATURE test of EHSET 2013-08-12 13:13:32 -07:00
emi26.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
emi62.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
ezusb.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
ftdi-elan.c usb: ftdi-elan: Use pr_<level> 2014-04-24 13:13:59 -07:00
idmouse.c USB: idmouse: fix NULL-deref at probe 2017-07-18 18:40:13 +01:00
iowarrior.c USB: iowarrior: fix info ioctl on big-endian hosts 2017-09-15 18:29:41 +01:00
isight_firmware.c Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb 2012-01-09 12:09:47 -08:00
Kconfig USB: ELAN: Remove useless "default M" lines 2014-02-11 13:47:13 -08:00
ldusb.c usb: ldusb: add PIDs for new CASSY devices supported by this driver 2018-06-16 22:22:16 +01:00
legousbtower.c usb: misc: legousbtower: Fix memory leak 2017-08-26 02:14:50 +01:00
Makefile usb: misc: EHSET Test Fixture device driver for host compliance 2013-07-25 11:49:30 -07:00
rio500.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
rio500_usb.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
trancevibrator.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
usb3503.c usb: misc: usb3503: Update error code in print message 2018-11-20 18:06:03 +00:00
usb_u132.h Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 2006-12-01 16:41:58 -08:00
usblcd.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
usbled.c usb/misc/usbled: Add Riso Kagaku Webmail Notifier 2014-02-11 14:00:16 -08:00
usbsevseg.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
usbtest.c usb: usbtest: fix NULL pointer dereference 2017-11-11 13:33:40 +00:00
uss720.c usb: misc: uss720: Fix two sleep-in-atomic-context bugs 2018-12-16 22:09:08 +00:00
yurex.c USB: yurex: Fix protection fault after device removal 2019-08-13 12:39:15 +01:00