Skip to content

Commit

Permalink
hso: always read interface number from the current altsetting
Browse files Browse the repository at this point in the history
Always read bInterfaceNumber from the current altsetting, not from the first one
available in the altsetting array. This is coming from code review, not related
to any specific bug.

Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Aleksander Morgado authored and David S. Miller committed Feb 20, 2015
1 parent 216fa18 commit 64bea46
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions drivers/net/usb/hso.c
Original file line number Diff line number Diff line change
Expand Up @@ -1477,6 +1477,7 @@ static void tiocmget_intr_callback(struct urb *urb)
struct uart_icount *icount;
struct hso_serial_state_notification *serial_state_notification;
struct usb_device *usb;
struct usb_interface *interface;
int if_num;

/* Sanity checks */
Expand All @@ -1494,7 +1495,9 @@ static void tiocmget_intr_callback(struct urb *urb)
BUG_ON((serial->parent->port_spec & HSO_PORT_MASK) != HSO_PORT_MODEM);

usb = serial->parent->usb;
if_num = serial->parent->interface->altsetting->desc.bInterfaceNumber;
interface = serial->parent->interface;

if_num = interface->cur_altsetting->desc.bInterfaceNumber;

/* wIndex should be the USB interface number of the port to which the
* notification applies, which should always be the Modem port.
Expand Down Expand Up @@ -1675,6 +1678,7 @@ static int hso_serial_tiocmset(struct tty_struct *tty,
unsigned long flags;
int if_num;
struct hso_serial *serial = tty->driver_data;
struct usb_interface *interface;

/* sanity check */
if (!serial) {
Expand All @@ -1685,7 +1689,8 @@ static int hso_serial_tiocmset(struct tty_struct *tty,
if ((serial->parent->port_spec & HSO_PORT_MASK) != HSO_PORT_MODEM)
return -EINVAL;

if_num = serial->parent->interface->altsetting->desc.bInterfaceNumber;
interface = serial->parent->interface;
if_num = interface->cur_altsetting->desc.bInterfaceNumber;

spin_lock_irqsave(&serial->serial_lock, flags);
if (set & TIOCM_RTS)
Expand Down Expand Up @@ -2808,7 +2813,7 @@ static int hso_get_config_data(struct usb_interface *interface)
{
struct usb_device *usbdev = interface_to_usbdev(interface);
u8 *config_data = kmalloc(17, GFP_KERNEL);
u32 if_num = interface->altsetting->desc.bInterfaceNumber;
u32 if_num = interface->cur_altsetting->desc.bInterfaceNumber;
s32 result;

if (!config_data)
Expand Down Expand Up @@ -2886,7 +2891,7 @@ static int hso_probe(struct usb_interface *interface,
return -ENODEV;
}

if_num = interface->altsetting->desc.bInterfaceNumber;
if_num = interface->cur_altsetting->desc.bInterfaceNumber;

/* Get the interface/port specification from either driver_info or from
* the device itself */
Expand Down

0 comments on commit 64bea46

Please sign in to comment.