From patchwork Tue Feb 17 10:31:29 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aleksander Morgado X-Patchwork-Id: 440551 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id F15291402A2 for ; Tue, 17 Feb 2015 21:31:42 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754940AbbBQKbh (ORCPT ); Tue, 17 Feb 2015 05:31:37 -0500 Received: from mail-we0-f176.google.com ([74.125.82.176]:40941 "EHLO mail-we0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753336AbbBQKbg (ORCPT ); Tue, 17 Feb 2015 05:31:36 -0500 Received: by mail-we0-f176.google.com with SMTP id x3so34094769wes.7 for ; Tue, 17 Feb 2015 02:31:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=YXGxuRnreRBY7Ep//84b2Dn6plLaMW09Fgvoe137c3o=; b=IomjHQPJ5wrSioj/xLzbaxmctfB1DB5KfpdGs2ijk8tJbnyGBNylQd0tRt5oFEQqxT K4ytLRpqGMgWLZzrp1fmzsI3MH1YFG4X6qUK6tOvZ8eDzAW5XMClAqbIVVRjXQgeEoil f8sR1GFXEzMXVRe3yNzGoMcwKff16Rr328wa9ck0YeJM/vSTwkAWGak3zDB8l2VM6D50 Lsi8uNdUkAnhLxMiYZM14PzVUeVvbs/a2oE0CJ2mLq6x3Xk6n28w/KmRt1oHEv9Yq7Jf 8iPqBOWnYgD2CfZfhf4EJ62mVlCh58BTFy624l56WuSFXyTq4mlkkvQ4urCkmU+KlQM1 b2JQ== X-Gm-Message-State: ALoCoQmQa2IWHpWjU67gDnKLuSETrpG2BtrzmBO4tOqgo71xJXtUna8s0OsJL9lzu5moxCSx90wd X-Received: by 10.180.206.14 with SMTP id lk14mr56067955wic.71.1424169095304; Tue, 17 Feb 2015 02:31:35 -0800 (PST) Received: from athena.localdomain ([188.86.139.224]) by mx.google.com with ESMTPSA id d10sm26701284wjn.45.2015.02.17.02.31.33 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 17 Feb 2015 02:31:34 -0800 (PST) From: Aleksander Morgado To: j.dumon@option.com Cc: linux-usb@vger.kernel.org, netdev@vger.kernel.org, Aleksander Morgado Subject: [PATCH] hso: always read interface number from the current altsetting Date: Tue, 17 Feb 2015 11:31:29 +0100 Message-Id: <1424169089-25039-1-git-send-email-aleksander@aleksander.es> X-Mailer: git-send-email 2.3.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 --- drivers/net/usb/hso.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c index 9cdfb3f..3c8dfe5 100644 --- a/drivers/net/usb/hso.c +++ b/drivers/net/usb/hso.c @@ -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 */ @@ -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. @@ -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) { @@ -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) @@ -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) @@ -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 */