diff options
| -rw-r--r-- | drivers/usb/storage/uas.c | 18 |
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 | */ |
| 994 | static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id) | 994 | static 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 | ||
| 1045 | deconfig_eps: | 1044 | free_streams: |
| 1046 | uas_free_streams(devinfo); | 1045 | uas_free_streams(devinfo); |
| 1047 | free: | 1046 | set_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); |
