On Mon, Mar 06, 2017 at 10:27:09AM +0100, Johan Hovold wrote:
> On Sat, Mar 04, 2017 at 02:21:28AM +0800, kbuild test robot wrote:
> > Hi Johan,
> > 
> > [auto build test WARNING on usb/usb-testing]
> > [also build test WARNING on v4.10 next-20170303]
> > [if your patch is applied to the wrong git tree, please drop us a note to 
> > help improve the system]
> > 
> > url:    
> > https://github.com/0day-ci/linux/commits/Johan-Hovold/USB-serial-refactor-endpoint-sanity-checks/20170303-232312
> > base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git 
> > usb-testing
> > config: x86_64-randconfig-s0-03040020 (attached as .config)
> > compiler: gcc-4.4 (Debian 4.4.7-8) 4.4.7
> > reproduce:
> >         # save the attached .config to linux build tree
> >         make ARCH=x86_64 
> > 
> > All warnings (new ones prefixed by >>):
> > 
> >    drivers/usb/serial/usb-serial.c: In function 'usb_serial_probe':
> >    drivers/usb/serial/usb-serial.c:1088: warning: label 'err_free_epds' 
> > defined but not used
> > >> drivers/usb/serial/usb-serial.c:767: warning: unused variable 
> > >> 'iface_desc'
> 
> Ah, both of these warning only show up when neither
> CONFIG_USB_SERIAL_PL2303 or CONFIG_USB_SERIAL_GENERIC is selected. Both
> of these conditionally compile sections will be removed by a follow-on
> series, but I'll respin this one to get rid of the warning in this
> configuration nonetheless.

So I've fixed this up by moving the descriptor pointer to the
conditionally compiled section, and by not adding the new error label
until a later patch in this series that needs it unconditionally.

The resulting diff of this change is below, but I don't think I need to
repost the whole series unless further changes are needed.

Johan


diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
index 68af80540000..09eb639298c8 100644
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -764,7 +764,6 @@ static int usb_serial_probe(struct usb_interface *interface,
        struct usb_device *dev = interface_to_usbdev(interface);
        struct usb_serial *serial = NULL;
        struct usb_serial_port *port;
-       struct usb_host_interface *iface_desc;
        struct usb_endpoint_descriptor *endpoint;
        struct usb_serial_endpoints *epds;
        struct usb_serial_driver *type = NULL;
@@ -830,6 +829,8 @@ static int usb_serial_probe(struct usb_interface *interface,
            ((le16_to_cpu(dev->descriptor.idVendor) == SIEMENS_VENDOR_ID) &&
             (le16_to_cpu(dev->descriptor.idProduct) == 
SIEMENS_PRODUCT_ID_EF81))) {
                if (interface != dev->actconfig->interface[0]) {
+                       struct usb_host_interface *iface_desc;
+
                        /* check out the endpoints of the other interface*/
                        iface_desc = 
dev->actconfig->interface[0]->cur_altsetting;
                        for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
@@ -850,7 +851,8 @@ static int usb_serial_probe(struct usb_interface *interface,
                if (epds->num_bulk_in == 0 || epds->num_bulk_out == 0) {
                        dev_info(ddev, "PL-2303 hack: descriptors matched but 
endpoints did not\n");
                        retval = -ENODEV;
-                       goto err_free_epds;
+                       kfree(epds);
+                       goto err_put_serial;
                }
        }
        /* END HORRIBLE HACK FOR PL2303 */
@@ -862,7 +864,8 @@ static int usb_serial_probe(struct usb_interface *interface,
                if (num_ports == 0) {
                        dev_err(ddev, "Generic device with no bulk out, not 
allowed.\n");
                        retval = -EIO;
-                       goto err_free_epds;
+                       kfree(epds);
+                       goto err_put_serial;
                }
                dev_info(ddev, "The \"generic\" usb-serial driver is only for 
testing and one-off prototypes.\n");
                dev_info(ddev, "Tell [email protected] to add your 
device to a proper driver.\n");
@@ -1085,8 +1088,6 @@ static int usb_serial_probe(struct usb_interface 
*interface,
 
 probe_error:
        retval = -EIO;
-err_free_epds:
-       kfree(epds);
 err_put_serial:
        usb_serial_put(serial);
 err_put_module:
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to