Skip to content

Commit

Permalink
USB: qcserial: centralize probe exit path
Browse files Browse the repository at this point in the history
Creating a common exit path from qcprobe to make it
easier to extend it.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Bjørn Mork authored and Greg Kroah-Hartman committed Jul 17, 2012
1 parent 2cf6993 commit d25d5f2
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions drivers/usb/serial/qcserial.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,11 +157,10 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
usb_endpoint_is_bulk_out(&intf->endpoint[1].desc)) {
dev_dbg(dev, "QDL port found\n");

if (serial->interface->num_altsetting == 1) {
if (serial->interface->num_altsetting == 1)
retval = 0; /* Success */
break;
}
altsetting = 1;
else
altsetting = 1;
}
break;

Expand Down Expand Up @@ -203,8 +202,6 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)

default:
dev_err(dev, "unknown number of interfaces: %d\n", nintf);
kfree(data);
retval = -ENODEV;
}

if (altsetting >= 0) {
Expand All @@ -214,13 +211,15 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
"Could not set interface, error %d\n",
retval);
retval = -ENODEV;
kfree(data);
}
}

/* Set serial->private if not returning -ENODEV */
if (retval != -ENODEV)
/* Set serial->private if not returning error */
if (retval == 0)
usb_set_serial_data(serial, data);
else
kfree(data);

return retval;
}

Expand Down

0 comments on commit d25d5f2

Please sign in to comment.