From a1e5280d9eedb77976091a1c8befb273c6464f54 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Wed, 30 Mar 2016 07:57:34 +0200 Subject: [PATCH] use smarter error handling for lxc_strmmap() Additionally, fix the comment for lxc_strmmap() and cleanup #includes in utils.{c,h}. Signed-off-by: Christian Brauner --- src/lxc/utils.c | 35 +++++++++++++++++------------------ src/lxc/utils.h | 7 ++++--- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/lxc/utils.c b/src/lxc/utils.c index ba20c43df..be1d5344d 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -23,24 +23,24 @@ #include "config.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include #include +#include #include #include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include "utils.h" #include "log.h" @@ -1821,17 +1821,16 @@ void *lxc_strmmap(void *addr, size_t length, int prot, int flags, int fd, * underlying file. The pages handed to us are zero filled. */ tmp = mmap(addr, length + 1, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (tmp == MAP_FAILED) - goto out; + return tmp; /* Now we establish a fixed-address mapping starting at the address we * received from our anonymous mapping and replace all bytes excluding * the additional \0-byte with the file. This allows us to use normal - * string-handling function. */ + * string-handling functions. */ overlap = mmap(tmp, length, prot, MAP_FIXED | flags, fd, offset); if (overlap == MAP_FAILED) - goto out; + munmap(tmp, length + 1); -out: return overlap; } diff --git a/src/lxc/utils.h b/src/lxc/utils.h index fbd516cf6..22161cbf6 100644 --- a/src/lxc/utils.h +++ b/src/lxc/utils.h @@ -23,6 +23,8 @@ #ifndef __LXC_UTILS_H #define __LXC_UTILS_H +#include "config.h" + #include #include #include @@ -31,7 +33,6 @@ #include #include -#include "config.h" #include "initutils.h" /* returns 1 on success, 0 if there were any failures */ @@ -253,11 +254,11 @@ extern size_t lxc_array_len(void **array); extern void **lxc_append_null_to_array(void **array, size_t count); -/* mmap() wrapper. lxc_mmap() will take care to \0-terminate files so that +/* mmap() wrapper. lxc_strmmap() will take care to \0-terminate files so that * normal string-handling functions can be used on the buffer. */ extern void *lxc_strmmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); -/* munmap() wrapper. Use it to free memory mmap()ed with lxc_mmap(). */ +/* munmap() wrapper. Use it to free memory mmap()ed with lxc_strmmap(). */ extern int lxc_strmunmap(void *addr, size_t length); //initialize rand with urandom