From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <1494588377.3965.66.camel@codethink.co.uk> Subject: Re: [PATCH 4.4 38/60] USB: serial: sierra: fix bogus alternate-setting assumption From: Ben Hutchings To: Greg Kroah-Hartman , Johan Hovold Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org Date: Fri, 12 May 2017 12:26:17 +0100 In-Reply-To: <20170511141238.714173568@linuxfoundation.org> References: <20170511141237.094835992@linuxfoundation.org> <20170511141238.714173568@linuxfoundation.org> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: On Thu, 2017-05-11 at 16:13 +0200, Greg Kroah-Hartman wrote: > 4.4-stable review patch. If anyone has any objections, please let me know. > > ------------------ > > From: Johan Hovold > > commit 16620b483eaf7750413bae472f4363b6b959fcaa upstream. > > Interface numbers do not change when enabling alternate settings as > comment and code in this driver suggested. > > Remove the confusing comment and redundant retrieval of the interface > number in probe, while simplifying and renaming the interface-number > helper. This looks like cleanup with no functional impact, so unless it's needed as preparation for something else I think it should be dropped. Ben. > Fixes: 4db2299da213 ("sierra: driver interface blacklisting") > Reviewed-by: Greg Kroah-Hartman > Signed-off-by: Johan Hovold > Signed-off-by: Greg Kroah-Hartman > > --- > drivers/usb/serial/sierra.c | 28 +++++----------------------- > 1 file changed, 5 insertions(+), 23 deletions(-) > > --- a/drivers/usb/serial/sierra.c > +++ b/drivers/usb/serial/sierra.c > @@ -137,24 +137,9 @@ static int is_himemory(const u8 ifnum, > return 0; > } > > -static int sierra_calc_interface(struct usb_serial *serial) > +static u8 sierra_interface_num(struct usb_serial *serial) > { > - int interface; > - struct usb_interface *p_interface; > - struct usb_host_interface *p_host_interface; > - > - /* Get the interface structure pointer from the serial struct */ > - p_interface = serial->interface; > - > - /* Get a pointer to the host interface structure */ > - p_host_interface = p_interface->cur_altsetting; > - > - /* read the interface descriptor for this active altsetting > - * to find out the interface number we are on > - */ > - interface = p_host_interface->desc.bInterfaceNumber; > - > - return interface; > + return serial->interface->cur_altsetting->desc.bInterfaceNumber; > } > > static int sierra_probe(struct usb_serial *serial, > @@ -165,7 +150,7 @@ static int sierra_probe(struct usb_seria > u8 ifnum; > > udev = serial->dev; > - ifnum = sierra_calc_interface(serial); > + ifnum = sierra_interface_num(serial); > > /* > * If this interface supports more than 1 alternate > @@ -178,9 +163,6 @@ static int sierra_probe(struct usb_seria > usb_set_interface(udev, ifnum, 1); > } > > - /* ifnum could have changed - by calling usb_set_interface */ > - ifnum = sierra_calc_interface(serial); > - > if (is_blacklisted(ifnum, > (struct sierra_iface_info *)id->driver_info)) { > dev_dbg(&serial->dev->dev, > @@ -342,7 +324,7 @@ static int sierra_send_setup(struct usb_ > > /* If composite device then properly report interface */ > if (serial->num_ports == 1) { > - interface = sierra_calc_interface(serial); > + interface = sierra_interface_num(serial); > /* Control message is sent only to interfaces with > * interrupt_in endpoints > */ > @@ -916,7 +898,7 @@ static int sierra_port_probe(struct usb_ > /* Determine actual memory requirements */ > if (serial->num_ports == 1) { > /* Get interface number for composite device */ > - ifnum = sierra_calc_interface(serial); > + ifnum = sierra_interface_num(serial); > himemoryp = &typeB_interface_list; > } else { > /* This is really the usb-serial port number of the interface > > > -- Ben Hutchings Software Developer, Codethink Ltd.