mirror of https://gitee.com/openkylin/linux.git
usbfs: Allow printer class 'get_device_id' without needing to claim the intf
For certain (HP) printers the printer device_id does not only contain a static part identifying the printer, but it also contains a dynamic part giving printer status, ink level, etc. To get to this info various userspace utilities need to be able to make a printer class 'get_device_id' request without first claiming the interface (as that is in use for the actual printer driver). Since the printer class 'get_device_id' request does not change interface settings in anyway, allowing this without claiming the interface should not cause any issues. CC: Sanjay Kumar <sanjay.kumar14@hp.com> CC: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
aaf6b52d50
commit
5dc50c357d
|
@ -725,15 +725,15 @@ static int check_ctrlrecip(struct dev_state *ps, unsigned int requesttype,
|
|||
|
||||
/*
|
||||
* check for the special corner case 'get_device_id' in the printer
|
||||
* class specification, where wIndex is (interface << 8 | altsetting)
|
||||
* instead of just interface
|
||||
* class specification, which we always want to allow as it is used
|
||||
* to query things like ink level, etc.
|
||||
*/
|
||||
if (requesttype == 0xa1 && request == 0) {
|
||||
alt_setting = usb_find_alt_setting(ps->dev->actconfig,
|
||||
index >> 8, index & 0xff);
|
||||
if (alt_setting
|
||||
&& alt_setting->desc.bInterfaceClass == USB_CLASS_PRINTER)
|
||||
index >>= 8;
|
||||
return 0;
|
||||
}
|
||||
|
||||
index &= 0xff;
|
||||
|
|
Loading…
Reference in New Issue