From: Christian Brauner Date: Wed, 3 Oct 2018 10:49:46 +0000 (+0200) Subject: syscall_wrappers: move memfd_create() X-Git-Tag: lxc-3.1.0~65^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a886ddf192885d6896f4f67cc94df8b68fbc560;p=thirdparty%2Flxc.git syscall_wrappers: move memfd_create() Signed-off-by: Christian Brauner --- diff --git a/src/lxc/ringbuf.c b/src/lxc/ringbuf.c index 1d5cfe916..97f68539f 100644 --- a/src/lxc/ringbuf.c +++ b/src/lxc/ringbuf.c @@ -32,6 +32,7 @@ #include "config.h" #include "ringbuf.h" +#include "syscall_wrappers.h" #include "utils.h" int lxc_ringbuf_create(struct lxc_ringbuf *buf, size_t size) diff --git a/src/lxc/syscall_wrappers.h b/src/lxc/syscall_wrappers.h index a6c7694d9..da376d589 100644 --- a/src/lxc/syscall_wrappers.h +++ b/src/lxc/syscall_wrappers.h @@ -32,6 +32,10 @@ #include "config.h" +#ifdef HAVE_LINUX_MEMFD_H +#include +#endif + typedef int32_t key_serial_t; #if !HAVE_KEYCTL @@ -48,6 +52,50 @@ static inline long __keyctl(int cmd, unsigned long arg2, unsigned long arg3, #define keyctl __keyctl #endif +#ifndef HAVE_MEMFD_CREATE +static inline int memfd_create(const char *name, unsigned int flags) { + #ifndef __NR_memfd_create + #if defined __i386__ + #define __NR_memfd_create 356 + #elif defined __x86_64__ + #define __NR_memfd_create 319 + #elif defined __arm__ + #define __NR_memfd_create 385 + #elif defined __aarch64__ + #define __NR_memfd_create 279 + #elif defined __s390__ + #define __NR_memfd_create 350 + #elif defined __powerpc__ + #define __NR_memfd_create 360 + #elif defined __sparc__ + #define __NR_memfd_create 348 + #elif defined __blackfin__ + #define __NR_memfd_create 390 + #elif defined __ia64__ + #define __NR_memfd_create 1340 + #elif defined _MIPS_SIM + #if _MIPS_SIM == _MIPS_SIM_ABI32 + #define __NR_memfd_create 4354 + #endif + #if _MIPS_SIM == _MIPS_SIM_NABI32 + #define __NR_memfd_create 6318 + #endif + #if _MIPS_SIM == _MIPS_SIM_ABI64 + #define __NR_memfd_create 5314 + #endif + #endif + #endif + #ifdef __NR_memfd_create + return syscall(__NR_memfd_create, name, flags); + #else + errno = ENOSYS; + return -1; + #endif +} +#else +extern int memfd_create(const char *name, unsigned int flags); +#endif + #if !HAVE_PIVOT_ROOT static int pivot_root(const char *new_root, const char *put_old) { diff --git a/src/lxc/utils.h b/src/lxc/utils.h index 7bb361cfb..8c5914de7 100644 --- a/src/lxc/utils.h +++ b/src/lxc/utils.h @@ -43,10 +43,6 @@ #include "raw_syscalls.h" #include "string_utils.h" -#ifdef HAVE_LINUX_MEMFD_H -#include -#endif - /* returns 1 on success, 0 if there were any failures */ extern int lxc_rmdir_onedev(const char *path, const char *exclude); extern int get_u16(unsigned short *val, const char *arg, int base); @@ -199,50 +195,6 @@ static inline int signalfd(int fd, const sigset_t *mask, int flags) } #endif -#ifndef HAVE_MEMFD_CREATE -static inline int memfd_create(const char *name, unsigned int flags) { - #ifndef __NR_memfd_create - #if defined __i386__ - #define __NR_memfd_create 356 - #elif defined __x86_64__ - #define __NR_memfd_create 319 - #elif defined __arm__ - #define __NR_memfd_create 385 - #elif defined __aarch64__ - #define __NR_memfd_create 279 - #elif defined __s390__ - #define __NR_memfd_create 350 - #elif defined __powerpc__ - #define __NR_memfd_create 360 - #elif defined __sparc__ - #define __NR_memfd_create 348 - #elif defined __blackfin__ - #define __NR_memfd_create 390 - #elif defined __ia64__ - #define __NR_memfd_create 1340 - #elif defined _MIPS_SIM - #if _MIPS_SIM == _MIPS_SIM_ABI32 - #define __NR_memfd_create 4354 - #endif - #if _MIPS_SIM == _MIPS_SIM_NABI32 - #define __NR_memfd_create 6318 - #endif - #if _MIPS_SIM == _MIPS_SIM_ABI64 - #define __NR_memfd_create 5314 - #endif - #endif - #endif - #ifdef __NR_memfd_create - return syscall(__NR_memfd_create, name, flags); - #else - errno = ENOSYS; - return -1; - #endif -} -#else -extern int memfd_create(const char *name, unsigned int flags); -#endif - static inline int lxc_set_cloexec(int fd) { return fcntl(fd, F_SETFD, FD_CLOEXEC);