From 4c155036f9ce3a74bc3eb3bb79725616d3b6c125 Mon Sep 17 00:00:00 2001 From: gkostka Date: Thu, 1 Dec 2016 16:37:23 +0100 Subject: [PATCH] ext4_blockdev: don't make zero length block read/write operations Patch submitted by g.tywanczuk@posnet.com. --- src/ext4_blockdev.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/ext4_blockdev.c b/src/ext4_blockdev.c index 19653bb..205cd7a 100644 --- a/src/ext4_blockdev.c +++ b/src/ext4_blockdev.c @@ -350,14 +350,16 @@ int ext4_block_writebytes(struct ext4_blockdev *bdev, uint64_t off, /*Aligned data*/ blen = len / bdev->bdif->ph_bsize; - r = ext4_bdif_bwrite(bdev, p, block_idx, blen); - if (r != EOK) - return r; + if (blen != 0) { + r = ext4_bdif_bwrite(bdev, p, block_idx, blen); + if (r != EOK) + return r; - p += bdev->bdif->ph_bsize * blen; - len -= bdev->bdif->ph_bsize * blen; + p += bdev->bdif->ph_bsize * blen; + len -= bdev->bdif->ph_bsize * blen; - block_idx += blen; + block_idx += blen; + } /*Rest of the data*/ if (len) { @@ -416,14 +418,16 @@ int ext4_block_readbytes(struct ext4_blockdev *bdev, uint64_t off, void *buf, /*Aligned data*/ blen = len / bdev->bdif->ph_bsize; - r = ext4_bdif_bread(bdev, p, block_idx, blen); - if (r != EOK) - return r; + if (blen != 0) { + r = ext4_bdif_bread(bdev, p, block_idx, blen); + if (r != EOK) + return r; - p += bdev->bdif->ph_bsize * blen; - len -= bdev->bdif->ph_bsize * blen; + p += bdev->bdif->ph_bsize * blen; + len -= bdev->bdif->ph_bsize * blen; - block_idx += blen; + block_idx += blen; + } /*Rest of the data*/ if (len) { -- 2.30.2