A succeeding ioctl does not imply that the SCSI command succeeded. Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- hw/scsi-generic.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/scsi-generic.c b/hw/scsi-generic.c index 5130e9a..04549aa 100644 --- a/hw/scsi-generic.c +++ b/hw/scsi-generic.c @@ -311,7 +311,7 @@ static int get_blocksize(BlockDriverState *bdrv) io_header.timeout = 6000; /* XXX */ ret = bdrv_ioctl(bdrv, SG_IO, &io_header); - if (ret < 0) + if (ret < 0 || io_header.driver_status || io_header.host_status) return -1; return ldl_be_p(&buf[4]); @@ -341,7 +341,7 @@ static int get_stream_blocksize(BlockDriverState *bdrv) io_header.timeout = 6000; /* XXX */ ret = bdrv_ioctl(bdrv, SG_IO, &io_header); - if (ret < 0) + if (ret < 0 || io_header.driver_status || io_header.host_status) return -1; return ldl_be_p(&buf[0]) & 0xffffff; -- 1.7.6