mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 01:34:14 +08:00
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 <oliver@neukum.org> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e7eda93293
commit
c637f1fa7b
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user