qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] vnc: severe memory leak caused by broken palette_destro


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] vnc: severe memory leak caused by broken palette_destroy() function
Date: Mon, 21 Mar 2011 12:33:48 +0000

On Mon, Mar 21, 2011 at 11:52 AM, Ulrich Obergfell <address@hidden> wrote:
>
> The following commit breaks the code of the function palette_destroy().
>
> http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=commit;h=e31e3694afef58ba191cbcc6875ec243e5971268
>
> The broken code causes a severe memory leak of 'VncPalette' structures
> because it never frees anything:
>
>     70 void palette_destroy(VncPalette *palette)
>     71 {
>     72     if (palette == NULL) {
>     73         qemu_free(palette);
>     74     }
>     75 }
>
> Calling qemu_free() unconditionally could be considered. However,
> the original code (prior to the aforementioned commit) returned
> immediately if 'palette' was NULL. In order to be closer to the
> original code, the proposed patch corrects the 'if' statement.
>
> Signed-off-by: Ulrich Obergfell <address@hidden>
>
>
> diff -up ./ui/vnc-palette.c.orig0 ./ui/vnc-palette.c
> --- ./ui/vnc-palette.c.orig0    2011-03-15 03:53:22.000000000 +0100
> +++ ./ui/vnc-palette.c  2011-03-20 11:52:57.257560295 +0100
> @@ -69,7 +69,7 @@ void palette_init(VncPalette *palette, s
>
>  void palette_destroy(VncPalette *palette)
>  {
> -    if (palette == NULL) {
> +    if (palette) {
>         qemu_free(palette);
>     }
>  }

Please drop the if (palette) check entirely because qemu_free(NULL) is
a nop.  There's no need to perform this check at all.

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]