Without initialization to zero dirty_bitmap field may be not zero
for a bitmap which should not be stored and
qcow2_store_persistent_dirty_bitmaps will erroneously call
store_bitmap for it which leads to SYGSEGV on bdrv_dirty_bitmap_name.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
block/qcow2-bitmap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c
index e8d3bdbd6e..14f41d0427 100644
--- a/block/qcow2-bitmap.c
+++ b/block/qcow2-bitmap.c
@@ -602,7 +602,7 @@ static Qcow2BitmapList *bitmap_list_load(BlockDriverState *bs, uint64_t offset,
goto fail;
}
- bm = g_new(Qcow2Bitmap, 1);
+ bm = g_new0(Qcow2Bitmap, 1);
bm->table.offset = e->bitmap_table_offset;
bm->table.size = e->bitmap_table_size;
bm->flags = e->flags;
--
2.11.1
On 09/22/2017 09:43 AM, Vladimir Sementsov-Ogievskiy wrote: > Without initialization to zero dirty_bitmap field may be not zero > for a bitmap which should not be stored and > qcow2_store_persistent_dirty_bitmaps will erroneously call > store_bitmap for it which leads to SYGSEGV on bdrv_dirty_bitmap_name. s/SYG/SIG/ Introduced in commit 5f72826e, therefore it impacts 2.10, so: CC: qemu-stable@nongnu.org > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > block/qcow2-bitmap.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Eric Blake <eblake@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
22.09.2017 17:43, Vladimir Sementsov-Ogievskiy wrote: > Without initialization to zero dirty_bitmap field may be not zero > for a bitmap which should not be stored and > qcow2_store_persistent_dirty_bitmaps will erroneously call > store_bitmap for it which leads to SYGSEGV on bdrv_dirty_bitmap_name. please fix it to SIGSEGV... > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > block/qcow2-bitmap.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c > index e8d3bdbd6e..14f41d0427 100644 > --- a/block/qcow2-bitmap.c > +++ b/block/qcow2-bitmap.c > @@ -602,7 +602,7 @@ static Qcow2BitmapList *bitmap_list_load(BlockDriverState *bs, uint64_t offset, > goto fail; > } > > - bm = g_new(Qcow2Bitmap, 1); > + bm = g_new0(Qcow2Bitmap, 1); > bm->table.offset = e->bitmap_table_offset; > bm->table.size = e->bitmap_table_size; > bm->flags = e->flags; -- Best regards, Vladimir
On Fri, Sep 22, 2017 at 05:43:53PM +0300, Vladimir Sementsov-Ogievskiy wrote: > Without initialization to zero dirty_bitmap field may be not zero > for a bitmap which should not be stored and > qcow2_store_persistent_dirty_bitmaps will erroneously call > store_bitmap for it which leads to SYGSEGV on bdrv_dirty_bitmap_name. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > block/qcow2-bitmap.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
On 2017-09-22 16:43, Vladimir Sementsov-Ogievskiy wrote: > Without initialization to zero dirty_bitmap field may be not zero > for a bitmap which should not be stored and > qcow2_store_persistent_dirty_bitmaps will erroneously call > store_bitmap for it which leads to SYGSEGV on bdrv_dirty_bitmap_name. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > block/qcow2-bitmap.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Thanks, fixed the commit message and applied it to my block branch: https://github.com/XanClic/qemu/commits/block Max
Quoting Vladimir Sementsov-Ogievskiy (2017-09-22 09:43:53) > Without initialization to zero dirty_bitmap field may be not zero > for a bitmap which should not be stored and > qcow2_store_persistent_dirty_bitmaps will erroneously call > store_bitmap for it which leads to SYGSEGV on bdrv_dirty_bitmap_name. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> FYI: this patch has been tagged for stable 2.10.1, but is not yet upstream. Patch freeze for 2.10.1 is September 27th. > --- > block/qcow2-bitmap.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c > index e8d3bdbd6e..14f41d0427 100644 > --- a/block/qcow2-bitmap.c > +++ b/block/qcow2-bitmap.c > @@ -602,7 +602,7 @@ static Qcow2BitmapList *bitmap_list_load(BlockDriverState *bs, uint64_t offset, > goto fail; > } > > - bm = g_new(Qcow2Bitmap, 1); > + bm = g_new0(Qcow2Bitmap, 1); > bm->table.offset = e->bitmap_table_offset; > bm->table.size = e->bitmap_table_size; > bm->flags = e->flags; > -- > 2.11.1 > >
© 2016 - 2026 Red Hat, Inc.