[libvirt] [PATCH] qemu: Avoid memory leaks on qemuParseRBDString

Osier Yang jyang at redhat.com
Fri Jan 6 06:51:34 UTC 2012


On 2012年01月06日 14:36, ajia at redhat.com wrote:
> From: Alex Jia<ajia at redhat.com>
>
> Detected by valgrind. Leak introduced in commit 5745dc1.
>
> * src/qemu/qemu_command.c: fix memory leak on failure and successful path.
>
> * How to reproduce?
> % valgrind -v --leak-check=full ./qemuargv2xmltest
>
> * Actual result:
>
> ==2196== 80 bytes in 1 blocks are definitely lost in loss record 3 of 4
> ==2196==    at 0x4A05FDE: malloc (vg_replace_malloc.c:236)
> ==2196==    by 0x39CF07F6E1: strdup (in /lib64/libc-2.12.so)
> ==2196==    by 0x419823: qemuParseRBDString (qemu_command.c:1657)
> ==2196==    by 0x4221ED: qemuParseCommandLine (qemu_command.c:5934)
> ==2196==    by 0x422AFB: qemuParseCommandLineString (qemu_command.c:7561)
> ==2196==    by 0x416864: testCompareXMLToArgvHelper (qemuargv2xmltest.c:48)
> ==2196==    by 0x417DB1: virtTestRun (testutils.c:141)
> ==2196==    by 0x415CAF: mymain (qemuargv2xmltest.c:175)
> ==2196==    by 0x4174A7: virtTestMain (testutils.c:696)
> ==2196==    by 0x39CF01ECDC: (below main) (in /lib64/libc-2.12.so)
> ==2196==
> ==2196== LEAK SUMMARY:
> ==2196==    definitely lost: 80 bytes in 1 blocks
>
> Signed-off-by: Alex Jia<ajia at redhat.com>
> ---
>   src/qemu/qemu_command.c |    2 ++
>   1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index ea1b763..69bf868 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -1709,9 +1709,11 @@ static int qemuParseRBDString(virDomainDiskDefPtr disk)
>
>           p = next;
>       }
> +    VIR_FREE(options);
>       return 0;
>
>   no_memory:
> +    VIR_FREE(options);
>       virReportOOMError();
>       return -1;
>   }

Trivial, ACK and Pushed.

Osier




More information about the libvir-list mailing list