drive mirror:fix memory leak
authorZhang Min <rudy.zhangmin@huawei.com>
Thu, 23 Jan 2014 07:59:16 +0000 (15:59 +0800)
committerKevin Wolf <kwolf@redhat.com>
Fri, 24 Jan 2014 13:33:00 +0000 (14:33 +0100)
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.

It should use qemu_iovec_destroy() to free op->qiov.

Signed-off-by: Zhang Min <rudy.zhangmin@huawei.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/mirror.c

index 2932bab27a40e2ebb1bf8dc41a389d85db5708ba..05758e55007bda2260f85cdf069d7b69fa158ce6 100644 (file)
@@ -96,6 +96,7 @@ static void mirror_iteration_done(MirrorOp *op, int ret)
         bitmap_set(s->cow_bitmap, chunk_num, nb_chunks);
     }
 
+    qemu_iovec_destroy(&op->qiov);
     g_slice_free(MirrorOp, op);
     qemu_coroutine_enter(s->common.co, NULL);
 }