]> git.proxmox.com Git - mirror_qemu.git/commitdiff
scsi-generic: Fill in opt_xfer_len in INQUIRY reply if it is zero
authorFam Zheng <famz@redhat.com>
Mon, 27 Mar 2017 14:26:25 +0000 (22:26 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 27 Mar 2017 15:02:07 +0000 (17:02 +0200)
When opt_xfer_len is zero, Linux ignores max_xfer_len erroneously.

While that obviously should be fixed, we do older guests a favor to
always filling in a value.

Signed-off-by: Fam Zheng <famz@redhat.com>
Message-Id: <20170327142625.1249-1-famz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
hw/scsi/scsi-generic.c

index 2933119e7d92bda5e62d62fd83416966e196395e..a55ff87c228a9e3e518cc15f01183b0fe02f852f 100644 (file)
@@ -237,9 +237,8 @@ static void scsi_read_complete(void * opaque, int ret)
         assert(max_transfer);
         stl_be_p(&r->buf[8], max_transfer);
         /* Also take care of the opt xfer len. */
-        if (ldl_be_p(&r->buf[12]) > max_transfer) {
-            stl_be_p(&r->buf[12], max_transfer);
-        }
+        stl_be_p(&r->buf[12],
+                 MIN_NON_ZERO(max_transfer, ldl_be_p(&r->buf[12])));
     }
     scsi_req_data(&r->req, len);
     scsi_req_unref(&r->req);