From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MOWAm-0001lC-KK for qemu-devel@nongnu.org; Wed, 08 Jul 2009 08:22:52 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MOWAh-0001fp-4A for qemu-devel@nongnu.org; Wed, 08 Jul 2009 08:22:51 -0400 Received: from [199.232.76.173] (port=37934 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MOWAg-0001fm-Uh for qemu-devel@nongnu.org; Wed, 08 Jul 2009 08:22:46 -0400 Received: from mx2.redhat.com ([66.187.237.31]:41393) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MOWAg-0004ly-Hx for qemu-devel@nongnu.org; Wed, 08 Jul 2009 08:22:46 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n68CMjFl013202 for ; Wed, 8 Jul 2009 08:22:45 -0400 From: Kevin Wolf Date: Wed, 8 Jul 2009 14:21:35 +0200 Message-Id: <1247055695-4533-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH] qemu-io: Fix memory leak List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf qemu-io leaks the request buffer whenever the read or write function isn't executed completely down the "normal" code path. Signed-off-by: Kevin Wolf --- qemu-io.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diff --git a/qemu-io.c b/qemu-io.c index a8d55fe..98ebb65 100644 --- a/qemu-io.c +++ b/qemu-io.c @@ -334,7 +334,7 @@ read_f(int argc, char **argv) if (cnt < 0) { printf("read failed: %s\n", strerror(-cnt)); - return 0; + goto out; } if (Pflag) { @@ -349,7 +349,7 @@ read_f(int argc, char **argv) } if (qflag) - return 0; + goto out; if (vflag) dump_buffer(buf, offset, count); @@ -358,6 +358,7 @@ read_f(int argc, char **argv) t2 = tsub(t2, t1); print_report("read", &t2, offset, count, total, cnt, Cflag); +out: qemu_io_free(buf); return 0; @@ -632,16 +633,17 @@ write_f(int argc, char **argv) if (cnt < 0) { printf("write failed: %s\n", strerror(-cnt)); - return 0; + goto out; } if (qflag) - return 0; + goto out; /* Finally, report back -- -C gives a parsable format */ t2 = tsub(t2, t1); print_report("wrote", &t2, offset, count, total, cnt, Cflag); +out: qemu_io_free(buf); return 0; -- 1.6.0.6