]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
pflash: Fix blk_pread_nonzeroes()
authorKevin Wolf <kwolf@redhat.com>
Tue, 7 Mar 2023 15:53:18 +0000 (16:53 +0100)
committerCédric Le Goater <clg@kaod.org>
Tue, 7 Mar 2023 15:53:18 +0000 (16:53 +0100)
Commit a4b15a8b introduced a new function blk_pread_nonzeroes(). Instead
of reading directly from the root node of the BlockBackend, it reads
from its 'file' child node. This can happen to mostly work for raw
images (as long as the 'raw' format driver is in use, but not actually
doing anything), but it breaks everything else.

Fix it to read from the root node instead.

Fixes: a4b15a8b9ef25b44fa92a4825312622600c1f37c
Reported-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20230307140230.59158-1-kwolf@redhat.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
hw/block/block.c

index af0710e4778f03817beea55e6e1da682eb727f32..9f52ee6e728e34f8779a30e2afe7628b29e2dde9 100644 (file)
@@ -39,8 +39,7 @@ static int blk_pread_nonzeroes(BlockBackend *blk, hwaddr size, void *buf)
             return ret;
         }
         if (!(ret & BDRV_BLOCK_ZERO)) {
-            ret = bdrv_pread(bs->file, offset, bytes,
-                             (uint8_t *) buf + offset, 0);
+            ret = blk_pread(blk, offset, bytes, (uint8_t *) buf + offset, 0);
             if (ret < 0) {
                 return ret;
             }