[systemd-devel] [PATCH 4/5] [memleak] Do not leak mmapped area when other memory allocations fail.
David Herrmann
dh.herrmann at gmail.com
Thu Sep 11 08:28:20 PDT 2014
Hi
On Wed, Sep 10, 2014 at 11:20 AM, <philippedeswert at gmail.com> wrote:
> From: Philippe De Swert <philippedeswert at gmail.com>
>
> After a section of memory is succesfully allocated, some of the following
> actions can still fail due to lack of memory. In this case -ENOMEM is
> returned without actually freeing the already mapped memory.
> Found with coverity. Fixes: CID#1237762
>
> Signed-off-by: Philippe De Swert <philippedeswert at gmail.com>
Applied!
Thanks
David
> ---
> src/journal/mmap-cache.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c
> index 7dbbb5e..908562d 100644
> --- a/src/journal/mmap-cache.c
> +++ b/src/journal/mmap-cache.c
> @@ -496,15 +496,15 @@ static int add_mmap(
>
> c = context_add(m, context);
> if (!c)
> - return -ENOMEM;
> + goto outofmem;
>
> f = fd_add(m, fd);
> if (!f)
> - return -ENOMEM;
> + goto outofmem;
>
> w = window_add(m);
> if (!w)
> - return -ENOMEM;
> + goto outofmem;
>
> w->keep_always = keep_always;
> w->ptr = d;
> @@ -522,6 +522,10 @@ static int add_mmap(
> if (ret)
> *ret = (uint8_t*) w->ptr + (offset - w->offset);
> return 1;
> +
> +outofmem:
> + munmap(d, wsize);
> + return -ENOMEM;
> }
>
> int mmap_cache_get(
> --
> 1.8.3.2
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
More information about the systemd-devel
mailing list