diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-02-08 09:09:27 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-02-08 09:09:27 +0100 |
commit | d8c849037d9398abe6a5f5d065eafc777eb3bdaf (patch) | |
tree | 2ebe56d73c84619214ee9e131c586ad98b817e81 /drivers/usb/class | |
parent | 8cf9045b91382df9fb1eb420daa4d1c2697d2f44 (diff) | |
parent | 92bf22614b21a2706f4993b278017e437f7785b3 (diff) | |
download | lwn-d8c849037d9398abe6a5f5d065eafc777eb3bdaf.tar.gz lwn-d8c849037d9398abe6a5f5d065eafc777eb3bdaf.zip |
Merge 5.11-rc7 into usb-next
We need the USB fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/class')
-rw-r--r-- | drivers/usb/class/usblp.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c index 134dc2005ce9..c9f6e9758288 100644 --- a/drivers/usb/class/usblp.c +++ b/drivers/usb/class/usblp.c @@ -1329,14 +1329,17 @@ static int usblp_set_protocol(struct usblp *usblp, int protocol) if (protocol < USBLP_FIRST_PROTOCOL || protocol > USBLP_LAST_PROTOCOL) return -EINVAL; - alts = usblp->protocol[protocol].alt_setting; - if (alts < 0) - return -EINVAL; - r = usb_set_interface(usblp->dev, usblp->ifnum, alts); - if (r < 0) { - printk(KERN_ERR "usblp: can't set desired altsetting %d on interface %d\n", - alts, usblp->ifnum); - return r; + /* Don't unnecessarily set the interface if there's a single alt. */ + if (usblp->intf->num_altsetting > 1) { + alts = usblp->protocol[protocol].alt_setting; + if (alts < 0) + return -EINVAL; + r = usb_set_interface(usblp->dev, usblp->ifnum, alts); + if (r < 0) { + printk(KERN_ERR "usblp: can't set desired altsetting %d on interface %d\n", + alts, usblp->ifnum); + return r; + } } usblp->bidir = (usblp->protocol[protocol].epread != NULL); |