diff options
author | Oliver Neukum <[email protected]> | 2014-03-28 11:29:25 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <[email protected]> | 2014-04-16 14:04:59 -0700 |
commit | c637f1fa7b0452b71eebd35d00906d371c04714e (patch) | |
tree | e99bb91252f43a54926e3461f552be50a5e0ab38 | |
parent | e7eda9329372f5e436e5a9291eb115eab0feae02 (diff) |
uas: fix error handling during scsi_scan()
intfdata is set only after scsi_scan(). uas_pre_reset() however
needs intfdata to be valid and will follow the NULL pointer
killing khubd. intfdata must be preemptively set before the
host is registered and undone in the error case.
Signed-off-by: Oliver Neukum <[email protected]>
Reviewed-by: Hans de Goede <[email protected]>
Acked-by: Hans de Goede <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
-rw-r--r-- | drivers/usb/storage/uas.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c index 8f4222640bd6..fcab9b79d9fb 100644 --- a/drivers/usb/storage/uas.c +++ b/drivers/usb/storage/uas.c @@ -1096,16 +1096,17 @@ static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id) if (result) goto free_streams; + usb_set_intfdata(intf, shost); result = scsi_add_host(shost, &intf->dev); if (result) goto free_streams; scsi_scan_host(shost); - usb_set_intfdata(intf, shost); return result; free_streams: uas_free_streams(devinfo); + usb_set_intfdata(intf, NULL); set_alt0: usb_set_interface(udev, intf->altsetting[0].desc.bInterfaceNumber, 0); if (shost) |