[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] block migraton: check sectors before shift operatio
From: |
Yoshiaki Tamura |
Subject: |
[Qemu-devel] [PATCH] block migraton: check sectors before shift operation. |
Date: |
Mon, 19 Jul 2010 13:45:42 +0900 |
Commit d246673dcb9911218ff555bcdf28b250e38fa46c has expanded the types
of block drive that can be initialized for block migration. Although
bdrv_getlength() may return < 0, current code shifts it without
checking. This makes block migration initialization invalid and
results in abort() due to calling qemu_malloc() with 0 size at
bdrv_set_dirty_tracking(). This patch checks the return value of
bdrv_getlength() by masking with BDRV_SECTOR_MASK.
Signed-off-by: Yoshiaki Tamura <address@hidden>
---
block-migration.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/block-migration.c b/block-migration.c
index 7db6f02..2e02a4a 100644
--- a/block-migration.c
+++ b/block-migration.c
@@ -237,10 +237,11 @@ static void init_blk_migration_it(void *opaque,
BlockDriverState *bs)
int64_t sectors;
if (!bdrv_is_read_only(bs)) {
- sectors = bdrv_getlength(bs) >> BDRV_SECTOR_BITS;
- if (sectors == 0) {
+ sectors = bdrv_getlength(bs) & BDRV_SECTOR_MASK;
+ if (sectors <= 0) {
return;
}
+ sectors >>= BDRV_SECTOR_BITS;
bmds = qemu_mallocz(sizeof(BlkMigDevState));
bmds->bs = bs;
--
1.7.1.1
- [Qemu-devel] [PATCH] block migraton: check sectors before shift operation.,
Yoshiaki Tamura <=