[lxc-devel] [lxc/master] syscall: don't fail if __NR_signalfd is not defined

ffontaine on Github lxc-bot at linuxcontainers.org
Tue Jul 28 10:46:50 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 989 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200728/9f53e976/attachment.bin>
-------------- next part --------------
From 3341e204dc1e1da6ecbc1ffbe59fca33f23ca557 Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice at gmail.com>
Date: Tue, 28 Jul 2020 12:31:31 +0200
Subject: [PATCH] syscall: don't fail if __NR_signalfd is not defined

lxc fails to build if __NR_signalfd is not defined since version 4.0.0
and
https://github.com/lxc/lxc/commit/bed09c9cc0bec7bbd2442fcce4a2a0f03994cb09

However, some architectures don't define __NR_signalfd but only
__NR_signalfd4. This is the case for example for nios2 or csky:
https://github.com/bminor/glibc/blob/f9ac84f92f151e07586c55e14ed628d493a5929d/sysdeps/unix/sysv/linux/nios2/arch-syscall.h
https://github.com/bminor/glibc/blob/f9ac84f92f151e07586c55e14ed628d493a5929d/sysdeps/unix/sysv/linux/csky/arch-syscall.h

Fixes:
 - http://autobuild.buildroot.org/results/75096a48d2dbda57459523db3ed0952e63f93535

Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
---
 src/lxc/syscall_numbers.h  | 3 ---
 src/lxc/syscall_wrappers.h | 2 ++
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/lxc/syscall_numbers.h b/src/lxc/syscall_numbers.h
index e2e7883786..72e4ffe460 100644
--- a/src/lxc/syscall_numbers.h
+++ b/src/lxc/syscall_numbers.h
@@ -228,9 +228,6 @@
 		#if _MIPS_SIM == _MIPS_SIM_ABI64	/* n64 */
 			#define __NR_signalfd 5276
 		#endif
-	#else
-		#define -1
-		#warning "__NR_signalfd not defined for your architecture"
 	#endif
 #endif
 
diff --git a/src/lxc/syscall_wrappers.h b/src/lxc/syscall_wrappers.h
index 220ef65fde..6aaa437226 100644
--- a/src/lxc/syscall_wrappers.h
+++ b/src/lxc/syscall_wrappers.h
@@ -112,8 +112,10 @@ static inline int signalfd(int fd, const sigset_t *mask, int flags)
 	int retval;
 
 	retval = syscall(__NR_signalfd4, fd, mask, _NSIG / 8, flags);
+#ifdef __NR_signalfd
 	if (errno == ENOSYS && flags == 0)
 		retval = syscall(__NR_signalfd, fd, mask, _NSIG / 8);
+#endif
 
 	return retval;
 }


More information about the lxc-devel mailing list