Am 22.01.2014 um 08:56 hat Zhang Min geschrieben: > In the function mirror_iteration() -> qemu_iovec_init(), > it allocates memory for op->qiov.iov, when the write request calls back, > but in the function mirror_iteration_done(), it only frees the op, > not free the op->qiov.iov, so this causes memory leak. > > Signed-off-by: Zhang Min <rudy.zhang...@huawei.com> > --- > block/mirror.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/block/mirror.c b/block/mirror.c > index 2932bab..9840840 100644 > --- a/block/mirror.c > +++ b/block/mirror.c > @@ -96,6 +96,7 @@ static void mirror_iteration_done(MirrorOp *op, int ret) > bitmap_set(s->cow_bitmap, chunk_num, nb_chunks); > } > > + g_free(op->qiov.iov); > g_slice_free(MirrorOp, op); > qemu_coroutine_enter(s->common.co, NULL); > }
Please use qemu_iovec_destroy() instead. (I would also move it to right after the for loop that frees the individual buffers in qiov.) Kevin