From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54709) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5uKx-0003VW-Dn for qemu-devel@nongnu.org; Wed, 22 Jan 2014 04:43:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W5uKs-0001Ga-Ll for qemu-devel@nongnu.org; Wed, 22 Jan 2014 04:43:07 -0500 Received: from mx1.redhat.com ([209.132.183.28]:28803) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5uKs-0001GS-Dr for qemu-devel@nongnu.org; Wed, 22 Jan 2014 04:43:02 -0500 Date: Wed, 22 Jan 2014 10:42:58 +0100 From: Kevin Wolf Message-ID: <20140122094258.GC10065@dhcp-200-207.str.redhat.com> References: <52DF7998.1000601@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52DF7998.1000601@huawei.com> Subject: Re: [Qemu-devel] [PATCH] drive-mirror:fix memory leak List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Zhang Min Cc: Fam Zheng , "Wangting (Kathy)" , qemu-devel , Qinling , "Chentao (Boby)" , "Wubin (H)" 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 > --- > 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