diff options
| author | gkostka <kostka.grzegorz@gmail.com> | 2016-12-01 16:37:23 +0100 |
|---|---|---|
| committer | gkostka <kostka.grzegorz@gmail.com> | 2016-12-01 16:37:23 +0100 |
| commit | 4c155036f9ce3a74bc3eb3bb79725616d3b6c125 (patch) | |
| tree | 383f321828909d5c524c708b363d160a76ad3214 /src/ext4_blockdev.c | |
| parent | 1a96ef0a24a443094ad3c0293387a70e607227ee (diff) | |
ext4_blockdev: don't make zero length block read/write operations
Patch submitted by g.tywanczuk@posnet.com.
Diffstat (limited to 'src/ext4_blockdev.c')
| -rw-r--r-- | src/ext4_blockdev.c | 28 |
1 files 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) { |
