Skip to content

Commit

Permalink
uas: Fix / cleanup usb_uas_task error handling
Browse files Browse the repository at this point in the history
-The correct error if we cannot find the dev is INCORRECT_LUN rather then
 INVALID_INFO_UNIT
-Move the device not found check to the top so we only need to do it once
-Remove the dev->lun != lun checks, dev is returned by scsi_device_find
 which searches by lun, so this will never trigger

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
  • Loading branch information
jwrdegoede authored and kraxel committed Nov 26, 2013
1 parent d4bfc7b commit 5eb6d9e
Showing 1 changed file with 3 additions and 17 deletions.
20 changes: 3 additions & 17 deletions hw/usb/dev-uas.c
Expand Up @@ -746,17 +746,14 @@ static void usb_uas_task(UASDevice *uas, uas_ui *ui)
if (req) {
goto overlapped_tag;
}
if (dev == NULL) {
goto incorrect_lun;
}

switch (ui->task.function) {
case UAS_TMF_ABORT_TASK:
task_tag = be16_to_cpu(ui->task.task_tag);
trace_usb_uas_tmf_abort_task(uas->dev.addr, tag, task_tag);
if (dev == NULL) {
goto bad_target;
}
if (dev->lun != lun) {
goto incorrect_lun;
}
req = usb_uas_find_request(uas, task_tag);
if (req && req->dev == dev) {
scsi_req_cancel(req->req);
Expand All @@ -766,12 +763,6 @@ static void usb_uas_task(UASDevice *uas, uas_ui *ui)

case UAS_TMF_LOGICAL_UNIT_RESET:
trace_usb_uas_tmf_logical_unit_reset(uas->dev.addr, tag, lun);
if (dev == NULL) {
goto bad_target;
}
if (dev->lun != lun) {
goto incorrect_lun;
}
qdev_reset_all(&dev->qdev);
usb_uas_queue_response(uas, tag, UAS_RC_TMF_COMPLETE, 0);
break;
Expand All @@ -787,11 +778,6 @@ static void usb_uas_task(UASDevice *uas, uas_ui *ui)
usb_uas_queue_response(uas, req->tag, UAS_RC_OVERLAPPED_TAG, 0);
return;

bad_target:
/* FIXME: correct? [see long comment in usb_uas_command()] */
usb_uas_queue_response(uas, tag, UAS_RC_INVALID_INFO_UNIT, 0);
return;

incorrect_lun:
usb_uas_queue_response(uas, tag, UAS_RC_INCORRECT_LUN, 0);
}
Expand Down

0 comments on commit 5eb6d9e

Please sign in to comment.