Skip to content

Commit 24180a4

Browse files
yjun123mehmetb0
authored andcommitted
USB: usblp: return error when setting unsupported protocol
BugLink: https://bugs.launchpad.net/bugs/2097298 commit 7a3d76a upstream. Fix the regression introduced by commit d8c6edf ("USB: usblp: don't call usb_set_interface if there's a single alt"), which causes that unsupported protocols can also be set via ioctl when the num_altsetting of the device is 1. Move the check for protocol support to the earlier stage. Fixes: d8c6edf ("USB: usblp: don't call usb_set_interface if there's a single alt") Cc: stable <stable@kernel.org> Signed-off-by: Jun Yan <jerrysteve1101@gmail.com> Link: https://lore.kernel.org/r/20241212143852.671889-1-jerrysteve1101@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Noah Wager <noah.wager@canonical.com> Signed-off-by: Koichiro Den <koichiro.den@canonical.com>
1 parent d0eb356 commit 24180a4

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

drivers/usb/class/usblp.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1337,11 +1337,12 @@ static int usblp_set_protocol(struct usblp *usblp, int protocol)
13371337
if (protocol < USBLP_FIRST_PROTOCOL || protocol > USBLP_LAST_PROTOCOL)
13381338
return -EINVAL;
13391339

1340+
alts = usblp->protocol[protocol].alt_setting;
1341+
if (alts < 0)
1342+
return -EINVAL;
1343+
13401344
/* Don't unnecessarily set the interface if there's a single alt. */
13411345
if (usblp->intf->num_altsetting > 1) {
1342-
alts = usblp->protocol[protocol].alt_setting;
1343-
if (alts < 0)
1344-
return -EINVAL;
13451346
r = usb_set_interface(usblp->dev, usblp->ifnum, alts);
13461347
if (r < 0) {
13471348
printk(KERN_ERR "usblp: can't set desired altsetting %d on interface %d\n",

0 commit comments

Comments
 (0)