aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/storage/uas.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
index 059ce62de4b0..ec1b22d29501 100644
--- a/drivers/usb/storage/uas.c
+++ b/drivers/usb/storage/uas.c
@@ -993,8 +993,8 @@ static void uas_free_streams(struct uas_dev_info *devinfo)
993 */ 993 */
994static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id) 994static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id)
995{ 995{
996 int result; 996 int result = -ENOMEM;
997 struct Scsi_Host *shost; 997 struct Scsi_Host *shost = NULL;
998 struct uas_dev_info *devinfo; 998 struct uas_dev_info *devinfo;
999 struct usb_device *udev = interface_to_usbdev(intf); 999 struct usb_device *udev = interface_to_usbdev(intf);
1000 1000
@@ -1003,12 +1003,11 @@ static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id)
1003 1003
1004 devinfo = kmalloc(sizeof(struct uas_dev_info), GFP_KERNEL); 1004 devinfo = kmalloc(sizeof(struct uas_dev_info), GFP_KERNEL);
1005 if (!devinfo) 1005 if (!devinfo)
1006 return -ENOMEM; 1006 goto set_alt0;
1007 1007
1008 result = -ENOMEM;
1009 shost = scsi_host_alloc(&uas_host_template, sizeof(void *)); 1008 shost = scsi_host_alloc(&uas_host_template, sizeof(void *));
1010 if (!shost) 1009 if (!shost)
1011 goto free; 1010 goto set_alt0;
1012 1011
1013 shost->max_cmd_len = 16 + 252; 1012 shost->max_cmd_len = 16 + 252;
1014 shost->max_id = 1; 1013 shost->max_id = 1;
@@ -1030,11 +1029,11 @@ static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id)
1030 1029
1031 result = scsi_init_shared_tag_map(shost, devinfo->qdepth - 3); 1030 result = scsi_init_shared_tag_map(shost, devinfo->qdepth - 3);
1032 if (result) 1031 if (result)
1033 goto free; 1032 goto free_streams;
1034 1033
1035 result = scsi_add_host(shost, &intf->dev); 1034 result = scsi_add_host(shost, &intf->dev);
1036 if (result) 1035 if (result)
1037 goto deconfig_eps; 1036 goto free_streams;
1038 1037
1039 shost->hostdata[0] = (unsigned long)devinfo; 1038 shost->hostdata[0] = (unsigned long)devinfo;
1040 1039
@@ -1042,9 +1041,10 @@ static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id)
1042 usb_set_intfdata(intf, shost); 1041 usb_set_intfdata(intf, shost);
1043 return result; 1042 return result;
1044 1043
1045deconfig_eps: 1044free_streams:
1046 uas_free_streams(devinfo); 1045 uas_free_streams(devinfo);
1047 free: 1046set_alt0:
1047 usb_set_interface(udev, intf->altsetting[0].desc.bInterfaceNumber, 0);
1048 kfree(devinfo); 1048 kfree(devinfo);
1049 if (shost) 1049 if (shost)
1050 scsi_host_put(shost); 1050 scsi_host_put(shost);