mirror of
https://github.com/torvalds/linux.git
synced 2025-11-09 13:10:19 +02: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>
|
||
|---|---|---|
| .. | ||
| acm.txt | ||
| anchors.txt | ||
| authorization.txt | ||
| bulk-streams.txt | ||
| callbacks.txt | ||
| chipidea.txt | ||
| CREDITS | ||
| dma.txt | ||
| dwc3.txt | ||
| ehci.txt | ||
| error-codes.txt | ||
| functionfs.txt | ||
| gadget-testing.txt | ||
| gadget_configfs.txt | ||
| gadget_hid.txt | ||
| gadget_multi.txt | ||
| gadget_printer.txt | ||
| gadget_serial.txt | ||
| hotplug.txt | ||
| iuu_phoenix.txt | ||
| linux-cdc-acm.inf | ||
| linux.inf | ||
| mass-storage.txt | ||
| misc_usbsevseg.txt | ||
| mtouchusb.txt | ||
| ohci.txt | ||
| persist.txt | ||
| power-management.txt | ||
| proc_usb_info.txt | ||
| rio.txt | ||
| URB.txt | ||
| usb-help.txt | ||
| usb-serial.txt | ||
| usbdevfs-drop-permissions.c | ||
| usbip_protocol.txt | ||
| usbmon.txt | ||
| wusb-cbaf | ||
| WUSB-Design-overview.txt | ||