Am 28.05.2014 um 15:21 hat arei.gong...@huawei.com geschrieben: > From: Gonglei <arei.gong...@huawei.com> > > Spotted by Coverity: > > (3) Event alloc_fn: Storage is returned from allocation function > "qemu_blockalign(BlockDriverState *, size_t)". [details] > (4) Event var_assign: Assigning: "iov.iov_base" = storage returned from > "qemu_blockalign(bs, iov.iov_len)". > Also see events: [leaked_storage] > > 375 iov.iov_base = qemu_blockalign(bs, iov.iov_len); > 376 > 377 qemu_iovec_init_external(&qiov, &iov, 1); > 378 > 379 BLKDBG_EVENT(bs->file, BLKDBG_COW_READ); > 380 > (5) Event cond_true: Condition "!bs->drv", taking true branch > > 381 if (!bs->drv) { > (6) Event leaked_storage: Variable "iov" going out of scope leaks the > storage "iov.iov_base" points to. > Also see events: [alloc_fn][var_assign] > > 382 return -ENOMEDIUM; > 383 } > > Signed-off-by: Gonglei <arei.gong...@huawei.com> > Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > block/qcow2-cluster.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c > index 76d2bcf..4208dc0 100644 > --- a/block/qcow2-cluster.c > +++ b/block/qcow2-cluster.c > @@ -379,7 +379,8 @@ static int coroutine_fn copy_sectors(BlockDriverState *bs, > BLKDBG_EVENT(bs->file, BLKDBG_COW_READ); > > if (!bs->drv) { > - return -ENOMEDIUM; > + ret = -ENOMEDIUM; > + goto out; > } > > /* Call .bdrv_co_readv() directly instead of using the public block-layer
This is a duplicate of "[PATCH] qcow2: Fix memory leak in COW error path", which is already in Stefan's current pull request. Kevin