block/iscsi: fix memory corruption on iscsi resize
authorPeter Lieven <pl@kamp.de>
Fri, 22 Aug 2014 08:08:49 +0000 (10:08 +0200)
committerKevin Wolf <kwolf@redhat.com>
Fri, 22 Aug 2014 08:55:22 +0000 (10:55 +0200)
bs->total_sectors is not yet updated at this point. resulting
in memory corruption if the volume has grown and data is written
to the newly availble areas.

CC: qemu-stable@nongnu.org
Signed-off-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/iscsi.c

index cdd19c2..3e19202 100644 (file)
@@ -1512,7 +1512,8 @@ static int iscsi_truncate(BlockDriverState *bs, int64_t offset)
     if (iscsilun->allocationmap != NULL) {
         g_free(iscsilun->allocationmap);
         iscsilun->allocationmap =
-            bitmap_new(DIV_ROUND_UP(bs->total_sectors,
+            bitmap_new(DIV_ROUND_UP(sector_lun2qemu(iscsilun->num_blocks,
+                                                    iscsilun),
                                     iscsilun->cluster_sectors));
     }