[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen staging] libxl: fix build (missing CLONE_NEWIPC) on astonishingly old systems



commit 50923ade7a3d1a87b3a46020daa2ed897eb749e3
Author:     Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
AuthorDate: Mon Jan 14 14:59:37 2019 +0000
Commit:     Wei Liu <wei.liu2@xxxxxxxxxx>
CommitDate: Thu Jan 17 17:59:29 2019 +0000

    libxl: fix build (missing CLONE_NEWIPC) on astonishingly old systems
    
    CLONE_NEWIPC was introduced in Linux 2.6.19, on the 29th of November
    2006, which was 12 years, 1 month, and 14 days ago.
    
    Nevertheless apparently some people are trying to build Xen on systems
    whose kernel headers are that old.  Placate these people by providing
    a fallback #define for CLONE_NEWIPC.
    
    The actual binary value will of course remain constant, because of the
    kernel API promise, so this is and will be correct on all platforms
    where the CLONE_NEWIPC is supported.  (Even if for some reason we miss
    the right #includes.)
    
    Of course at runtime this value will not work on older kernels.  It
    will be rejected as unknown by anything except some pre-2.6.18
    kernels.  On those kernels we do not want to support dm_restrict, and
    an attempt to use it will fail.  It is OK for the failure to be a
    messy EINVAL syscall failure.  (The IPC namespace unshare is necessary
    to avoid a suborned deprivileged qemu from causing trouble with shm,
    sem, etc.)
    
    On the very old kernels, the feature is totally out of scope.
    (We are only interested, here, in making the build work, to avoid
    blocking people who aren't using this feature.)
    
    CC: Wei Liu <wei.liu2@xxxxxxxxxx>
    CC: Juergen Gross <jgross@xxxxxxxx>
    CC: Jan Beulich <JBeulich@xxxxxxxx>
    Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
    Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx>
    Release-acked-by: Juergen Gross <jgross@xxxxxxxx>
---
 tools/libxl/libxl_linux.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/tools/libxl/libxl_linux.c b/tools/libxl/libxl_linux.c
index 6475cca64b..59dd945bc1 100644
--- a/tools/libxl/libxl_linux.c
+++ b/tools/libxl/libxl_linux.c
@@ -18,6 +18,14 @@
 #include <sys/resource.h>
 #include "libxl_internal.h"
 
+
+/* Workarounds for Linux-specific lacks can go here: */
+
+#ifndef CLONE_NEWIPC /* Available as of Linux 2.6.19 / glibc 2.8 */
+# define CLONE_NEWIPC 0x08000000
+#endif
+
+
 int libxl__try_phy_backend(mode_t st_mode)
 {
     if (S_ISBLK(st_mode) || S_ISREG(st_mode)) {
--
generated by git-patchbot for /home/xen/git/xen.git#staging

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.