summaryrefslogtreecommitdiffstats
path: root/hw/scsi/esp.c
diff options
context:
space:
mode:
authorMark Cave-Ayland2021-04-07 21:57:59 +0200
committerMark Cave-Ayland2021-04-12 23:35:53 +0200
commit324c8809897c8c53ad05c3a7147d272f1711cd5e (patch)
treef47c624a96660ff30d7566784292fab486d9801c /hw/scsi/esp.c
parentesp: don't overflow cmdfifo if TC is larger than the cmdfifo size (diff)
downloadqemu-324c8809897c8c53ad05c3a7147d272f1711cd5e.tar.gz
qemu-324c8809897c8c53ad05c3a7147d272f1711cd5e.tar.xz
qemu-324c8809897c8c53ad05c3a7147d272f1711cd5e.zip
esp: don't reset async_len directly in esp_select() if cancelling request
Instead let the SCSI layer invoke the .cancel callback itself to cancel and reset the request state. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Tested-by: Alexander Bulekov <alxndr@bu.edu> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20210407195801.685-11-mark.cave-ayland@ilande.co.uk>
Diffstat (limited to 'hw/scsi/esp.c')
-rw-r--r--hw/scsi/esp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index a26a109166..0037197bdb 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -95,6 +95,7 @@ void esp_request_cancelled(SCSIRequest *req)
scsi_req_unref(s->current_req);
s->current_req = NULL;
s->current_dev = NULL;
+ s->async_len = 0;
}
}
@@ -206,7 +207,6 @@ static int esp_select(ESPState *s)
if (s->current_req) {
/* Started a new command before the old one finished. Cancel it. */
scsi_req_cancel(s->current_req);
- s->async_len = 0;
}
s->current_dev = scsi_device_find(&s->bus, 0, target, 0);