[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