mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-15 02:45:06 +00:00
The new USBDEVFS_DROP_PRIVILEGES ioctl allows a process to voluntarily
relinquish the ability to issue other ioctls that may interfere with
other processes and drivers that have claimed an interface on the
device.
This commit also includes a simple utility to be able to test the
ioctl, located at Documentation/usb/usbdevfs-drop-permissions.c
Example (with qemu-kvm's input device):
$ lsusb
...
Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd
$ usb-devices
...
C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=02 Driver=usbhid
$ sudo ./usbdevfs-drop-permissions /dev/bus/usb/001/002
OK: privileges dropped!
Available options:
[0] Exit now
[1] Reset device. Should fail if device is in use
[2] Claim 4 interfaces. Should succeed where not in use
[3] Narrow interface permission mask
Which option shall I run?: 1
ERROR: USBDEVFS_RESET failed! (1 - Operation not permitted)
Which test shall I run next?: 2
ERROR claiming if 0 (1 - Operation not permitted)
ERROR claiming if 1 (1 - Operation not permitted)
ERROR claiming if 2 (1 - Operation not permitted)
ERROR claiming if 3 (1 - Operation not permitted)
Which test shall I run next?: 0
After unbinding usbhid:
$ usb-devices
...
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=02 Driver=(none)
$ sudo ./usbdevfs-drop-permissions /dev/bus/usb/001/002
...
Which option shall I run?: 2
OK: claimed if 0
ERROR claiming if 1 (1 - Operation not permitted)
ERROR claiming if 2 (1 - Operation not permitted)
ERROR claiming if 3 (1 - Operation not permitted)
Which test shall I run next?: 1
OK: USBDEVFS_RESET succeeded
Which test shall I run next?: 0
After unbinding usbhid and restricting the mask:
$ sudo ./usbdevfs-drop-permissions /dev/bus/usb/001/002
...
Which option shall I run?: 3
Insert new mask: 0
OK: privileges dropped!
Which test shall I run next?: 2
ERROR claiming if 0 (1 - Operation not permitted)
ERROR claiming if 1 (1 - Operation not permitted)
ERROR claiming if 2 (1 - Operation not permitted)
ERROR claiming if 3 (1 - Operation not permitted)
Signed-off-by: Reilly Grant <reillyg@chromium.org>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Emilio López <emilio.lopez@collabora.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||
|---|---|---|
| .. | ||
| media | ||
| .gitignore | ||
| 80211.tmpl | ||
| alsa-driver-api.tmpl | ||
| crypto-API.tmpl | ||
| debugobjects.tmpl | ||
| device-drivers.tmpl | ||
| deviceiobook.tmpl | ||
| filesystems.tmpl | ||
| gadget.tmpl | ||
| genericirq.tmpl | ||
| gpu.tmpl | ||
| iio.tmpl | ||
| kernel-api.tmpl | ||
| kernel-hacking.tmpl | ||
| kernel-locking.tmpl | ||
| kgdb.tmpl | ||
| libata.tmpl | ||
| librs.tmpl | ||
| lsm.tmpl | ||
| Makefile | ||
| media_api.tmpl | ||
| mtdnand.tmpl | ||
| networking.tmpl | ||
| rapidio.tmpl | ||
| regulator.tmpl | ||
| s390-drivers.tmpl | ||
| scsi.tmpl | ||
| sh.tmpl | ||
| stylesheet.xsl | ||
| tracepoint.tmpl | ||
| uio-howto.tmpl | ||
| usb.tmpl | ||
| w1.tmpl | ||
| writing-an-alsa-driver.tmpl | ||
| writing_musb_glue_layer.tmpl | ||
| writing_usb_driver.tmpl | ||
| z8530book.tmpl | ||