diff --git a/qemu/block.c b/qemu/block.c index 20d2e1c..28c6393 100644 --- a/qemu/block.c +++ b/qemu/block.c @@ -546,6 +546,8 @@ int bdrv_write(BlockDriverState *bs, int64_t sector_num, int ret, len; len = nb_sectors * 512; ret = drv->bdrv_pwrite(bs, sector_num * 512, buf, len); + if (ret < 0 || ret != len) + abort(); if (ret < 0) return ret; else if (ret != len) @@ -553,7 +555,10 @@ int bdrv_write(BlockDriverState *bs, int64_t sector_num, else return 0; } else { - return drv->bdrv_write(bs, sector_num, buf, nb_sectors); + int ret = drv->bdrv_write(bs, sector_num, buf, nb_sectors); + if (ret < 0) + abort(); + return ret; } } diff --git a/qemu/hw/ide.c b/qemu/hw/ide.c index 329d053..d86f8b5 100644 --- a/qemu/hw/ide.c +++ b/qemu/hw/ide.c @@ -936,6 +936,9 @@ static void ide_write_dma_cb(void *opaque, int ret) int n; int64_t sector_num; + if (ret < 0) + abort(); + n = s->io_buffer_size >> 9; sector_num = ide_get_sector(s); if (n > 0) {