Skip to content

Commit 7a3d76a

Browse files
yjun123gregkh
authored andcommitted
USB: usblp: return error when setting unsupported protocol
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>
1 parent 057bd54 commit 7a3d76a

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)