From: Ken Werner <k...@linux.vnet.ibm.com>

Since the order of the first and second arguments of the raw clone()
system call is reversed on s390 and cris it needs to be invoked differently.

Signed-off-by: Ken Werner <k...@linux.vnet.ibm.com>
---
 src/nspawn/nspawn.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index 9ca53cd..9bfd7a5 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -3133,9 +3133,17 @@ int main(int argc, char *argv[]) {
                         goto finish;
                 }
 
+#if defined(__s390__) || defined(__CRIS)
+                /* On s390 and cris the order of the first and second arguments
+                 * of the raw clone() system call is reversed. */
+                pid = syscall(__NR_clone, NULL, SIGCHLD|CLONE_NEWNS|
+                                          (arg_share_system ? 0 : 
CLONE_NEWIPC|CLONE_NEWPID|CLONE_NEWUTS)|
+                                          (arg_private_network ? CLONE_NEWNET 
: 0));
+#else
                 pid = syscall(__NR_clone, SIGCHLD|CLONE_NEWNS|
                                           (arg_share_system ? 0 : 
CLONE_NEWIPC|CLONE_NEWPID|CLONE_NEWUTS)|
                                           (arg_private_network ? CLONE_NEWNET 
: 0), NULL);
+#endif
                 if (pid < 0) {
                         if (errno == EINVAL)
                                 r = log_error_errno(errno, "clone() failed, do 
you have namespace support enabled in your kernel? (You need UTS, IPC, PID and 
NET namespacing built in): %m");
-- 
1.7.1

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to