]> git.proxmox.com Git - mirror_qemu.git/commitdiff
pflash: fix sectors vs bytes confusion in blk_pread_nonzeroes()
authorStefan Hajnoczi <stefanha@redhat.com>
Tue, 30 Jan 2024 00:27:12 +0000 (19:27 -0500)
committerStefan Hajnoczi <stefanha@redhat.com>
Tue, 30 Jan 2024 21:17:59 +0000 (16:17 -0500)
The following expression is incorrect because blk_pread_nonzeroes()
deals in units of bytes, not sectors:

  bytes = MIN(size - offset, BDRV_REQUEST_MAX_SECTORS)
                                              ^^^^^^^

BDRV_REQUEST_MAX_BYTES is the appropriate constant.

Fixes: a4b15a8b9ef2 ("pflash: Only read non-zero parts of backend image")
Cc: Xiang Zheng <zhengxiang9@huawei.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20240130002712.257815-1-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
hw/block/block.c

index 9f52ee6e728e34f8779a30e2afe7628b29e2dde9..ff503002aa825e84cf8125ed658c097c5b183d4d 100644 (file)
@@ -30,7 +30,7 @@ static int blk_pread_nonzeroes(BlockBackend *blk, hwaddr size, void *buf)
     BlockDriverState *bs = blk_bs(blk);
 
     for (;;) {
-        bytes = MIN(size - offset, BDRV_REQUEST_MAX_SECTORS);
+        bytes = MIN(size - offset, BDRV_REQUEST_MAX_BYTES);
         if (bytes <= 0) {
             return 0;
         }