summaryrefslogtreecommitdiffstats
path: root/drivers/usb/cdns3/host-export.h
diff options
context:
space:
mode:
authorIngo Rohloff <ingo.rohloff@lauterbach.com>2019-10-11 13:55:18 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-10-15 20:22:13 +0200
commitabb0b3d96a1f9407dd66831ae33985a386d4200d (patch)
treea1517e718b24f2c8f17c6a770d00da0828b474bb /drivers/usb/cdns3/host-export.h
parentbe731286685af4de728851991b98cb8f579f58f6 (diff)
downloadlinux-abb0b3d96a1f9407dd66831ae33985a386d4200d.tar.bz2
usb: usbfs: Suppress problematic bind and unbind uevents.
commit 1455cf8dbfd0 ("driver core: emit uevents when device is bound to a driver") added bind and unbind uevents when a driver is bound or unbound to a physical device. For USB devices which are handled via the generic usbfs layer (via libusb for example), this is problematic: Each time a user space program calls ioctl(usb_fd, USBDEVFS_CLAIMINTERFACE, &usb_intf_nr); and then later ioctl(usb_fd, USBDEVFS_RELEASEINTERFACE, &usb_intf_nr); The kernel will now produce a bind or unbind event, which does not really contain any useful information. This allows a user space program to run a DoS attack against programs which listen to uevents (in particular systemd/eudev/upowerd): A malicious user space program just has to call in a tight loop ioctl(usb_fd, USBDEVFS_CLAIMINTERFACE, &usb_intf_nr); ioctl(usb_fd, USBDEVFS_RELEASEINTERFACE, &usb_intf_nr); With this loop the malicious user space program floods the kernel and all programs listening to uevents with tons of bind and unbind events. This patch suppresses uevents for ioctls USBDEVFS_CLAIMINTERFACE and USBDEVFS_RELEASEINTERFACE. Signed-off-by: Ingo Rohloff <ingo.rohloff@lauterbach.com> Link: https://lore.kernel.org/r/20191011115518.2801-1-ingo.rohloff@lauterbach.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/cdns3/host-export.h')
0 files changed, 0 insertions, 0 deletions