forked from Minki/linux
Staging: hv: storvsc: Fix error handling storvsc_host_reset()
Fix error handling storvsc_host_reset(). I would like to thank Long Li <longli@microsoft.com> for reporting this. Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com> Reported-by: Long Li <longli@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
59e00e744d
commit
a00e8224c1
@ -1019,7 +1019,7 @@ static int storvsc_host_reset(struct hv_device *device)
|
||||
|
||||
stor_device = get_out_stor_device(device);
|
||||
if (!stor_device)
|
||||
return -ENODEV;
|
||||
return FAILED;
|
||||
|
||||
request = &stor_device->reset_request;
|
||||
vstor_packet = &request->vstor_packet;
|
||||
@ -1036,13 +1036,11 @@ static int storvsc_host_reset(struct hv_device *device)
|
||||
VM_PKT_DATA_INBAND,
|
||||
VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
|
||||
if (ret != 0)
|
||||
goto cleanup;
|
||||
return FAILED;
|
||||
|
||||
t = wait_for_completion_timeout(&request->wait_event, 5*HZ);
|
||||
if (t == 0) {
|
||||
ret = -ETIMEDOUT;
|
||||
goto cleanup;
|
||||
}
|
||||
if (t == 0)
|
||||
return TIMEOUT_ERROR;
|
||||
|
||||
|
||||
/*
|
||||
@ -1050,8 +1048,7 @@ static int storvsc_host_reset(struct hv_device *device)
|
||||
* should have been flushed out and return to us
|
||||
*/
|
||||
|
||||
cleanup:
|
||||
return ret;
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@ -1060,16 +1057,11 @@ cleanup:
|
||||
*/
|
||||
static int storvsc_host_reset_handler(struct scsi_cmnd *scmnd)
|
||||
{
|
||||
int ret;
|
||||
struct hv_host_device *host_dev =
|
||||
(struct hv_host_device *)scmnd->device->host->hostdata;
|
||||
struct hv_device *dev = host_dev->dev;
|
||||
|
||||
ret = storvsc_host_reset(dev);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
|
||||
return ret;
|
||||
return storvsc_host_reset(dev);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user