Message ID | 1532542049-21893-1-git-send-email-frederic.konrad@adacore.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [for-3.0] qcow: fix a reference leak | expand |
Am 25.07.2018 um 20:07 hat KONRAD Frederic geschrieben: > Since 42a3e1ab367cdf38cce093de24eb406b99a4ef96 qemu asserts when using the > vvfat driver: > > git clone git://qemu.org/qemu.git > cd qemu > ./configure --target-list=ppc-softmmu --enable-debug > make -j8 > mkdir foo > touch foo/hello > ./ppc-softmmu/qemu-system-ppc -M prep --nographic --monitor null \ > -hda fat:rw:./foo > > "Ctrl-C" > > qemu-system-ppc: block.c:3368: bdrv_close_all: Assertion \ > `((&all_bdrv_states)->tqh_first == ((void *)0))' failed. > > This is because we reference bs twice in qcow_co_create(..) one time in > bdrv_open_blockdev_ref(..) and in blk_insert_bs(..) but we unref it only once > in blk_unref which leads to the reference leak. > > Note that I didn't tested much QCOW after this change as I don't use it much. > > Signed-off-by: KONRAD Frederic <frederic.konrad@adacore.com> Thanks, applied to the block branch. Kevin
diff --git a/block/qcow.c b/block/qcow.c index 102d058..385d935 100644 --- a/block/qcow.c +++ b/block/qcow.c @@ -938,6 +938,7 @@ static int coroutine_fn qcow_co_create(BlockdevCreateOptions *opts, ret = 0; exit: blk_unref(qcow_blk); + bdrv_unref(bs); qcrypto_block_free(crypto); return ret; }
Since 42a3e1ab367cdf38cce093de24eb406b99a4ef96 qemu asserts when using the vvfat driver: git clone git://qemu.org/qemu.git cd qemu ./configure --target-list=ppc-softmmu --enable-debug make -j8 mkdir foo touch foo/hello ./ppc-softmmu/qemu-system-ppc -M prep --nographic --monitor null \ -hda fat:rw:./foo "Ctrl-C" qemu-system-ppc: block.c:3368: bdrv_close_all: Assertion \ `((&all_bdrv_states)->tqh_first == ((void *)0))' failed. This is because we reference bs twice in qcow_co_create(..) one time in bdrv_open_blockdev_ref(..) and in blk_insert_bs(..) but we unref it only once in blk_unref which leads to the reference leak. Note that I didn't tested much QCOW after this change as I don't use it much. Signed-off-by: KONRAD Frederic <frederic.konrad@adacore.com> --- block/qcow.c | 1 + 1 file changed, 1 insertion(+)