All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cedric Le Goater <clg@fr.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: Andrew Morton <akpm@osdl.org>, Cedric Le Goater <clg@fr.ibm.com>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>,
	Kirill Korotaev <dev@openvz.org>, Andrey Savochkin <saw@sw.ru>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Herbert Poetzl <herbert@13thfloor.at>,
	Sam Vilain <sam.vilain@catalyst.net.nz>,
	"Serge E. Hallyn" <serue@us.ibm.com>,
	Dave Hansen <haveblue@us.ibm.com>
Subject: [PATCH -mm 2/7] add execns syscall to s390
Date: Tue, 11 Jul 2006 09:50:53 +0200	[thread overview]
Message-ID: <20060711075409.113248000@localhost.localdomain> (raw)
In-Reply-To: 20060711075051.382004000@localhost.localdomain

[-- Attachment #1: execns-syscall-s390.patch --]
[-- Type: text/plain, Size: 5342 bytes --]

This patch adds the execns() syscall to the s390 architecture.

The 32bits syscall is not implemented. 

Signed-off-by: Cedric Le Goater <clg@fr.ibm.com>
Cc: Andrew Morton <akpm@osdl.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Kirill Korotaev <dev@openvz.org>
Cc: Andrey Savochkin <saw@sw.ru>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Herbert Poetzl <herbert@13thfloor.at>
Cc: Sam Vilain <sam.vilain@catalyst.net.nz>
Cc: Serge E. Hallyn <serue@us.ibm.com>
Cc: Dave Hansen <haveblue@us.ibm.com>

--
 arch/s390/kernel/entry.S    |   10 ++++++++++
 arch/s390/kernel/entry64.S  |    8 ++++++++
 arch/s390/kernel/process.c  |   31 +++++++++++++++++++++++++++++++
 arch/s390/kernel/syscalls.S |    1 +
 include/asm-s390/unistd.h   |    3 ++-
 5 files changed, 52 insertions(+), 1 deletion(-)

Index: 2.6.18-rc1-mm1/arch/s390/kernel/entry.S
===================================================================
--- 2.6.18-rc1-mm1.orig/arch/s390/kernel/entry.S
+++ 2.6.18-rc1-mm1/arch/s390/kernel/entry.S
@@ -410,6 +410,15 @@ sys_execve_glue:        
         bnz     0(%r12)               # it did fail -> store result in gpr2
         b       4(%r12)               # SKIP ST 2,SP_R2(15) after BASR 14,8
                                       # in system_call/sysc_tracesys
+sys_execns_glue:
+        la      %r2,SP_PTREGS(%r15)   # load pt_regs
+        l       %r1,BASED(.Lexecns)
+	lr      %r12,%r14             # save return address
+        basr    %r14,%r1              # call sys_execns
+        ltr     %r2,%r2               # check if execns failed
+        bnz     0(%r12)               # it did fail -> store result in gpr2
+        b       4(%r12)               # SKIP ST 2,SP_R2(15) after BASR 14,8
+                                      # in system_call/sysc_tracesys
 
 sys_sigreturn_glue:     
         la      %r2,SP_PTREGS(%r15)   # load pt_regs as parameter
@@ -1024,6 +1033,7 @@ cleanup_io_leave_insn:
 .Lschedule:    .long  schedule
 .Lclone:       .long  sys_clone
 .Lexecve:      .long  sys_execve
+.Lexecns:      .long  sys_execns
 .Lfork:        .long  sys_fork
 .Lrt_sigreturn:.long  sys_rt_sigreturn
 .Lrt_sigsuspend:
Index: 2.6.18-rc1-mm1/arch/s390/kernel/process.c
===================================================================
--- 2.6.18-rc1-mm1.orig/arch/s390/kernel/process.c
+++ 2.6.18-rc1-mm1/arch/s390/kernel/process.c
@@ -343,6 +343,37 @@ out:
         return error;
 }
 
+/*
+ * sys_execns() executes a new program and unshares selected
+ * namespaces.
+ */
+asmlinkage long sys_execns(struct pt_regs regs)
+{
+        int error;
+	int flags;
+        char * filename;
+
+	flags = regs.orig_gpr2;
+        filename = getname((char __user *) regs.gprs[3]);
+        error = PTR_ERR(filename);
+        if (IS_ERR(filename))
+                goto out;
+        error = do_execns(flags, filename,
+			  (char __user * __user *) regs.gprs[4],
+			  (char __user * __user *) regs.gprs[5], &regs);
+	if (error == 0) {
+		task_lock(current);
+		current->ptrace &= ~PT_DTRACE;
+		task_unlock(current);
+		current->thread.fp_regs.fpc = 0;
+		if (MACHINE_HAS_IEEE)
+			asm volatile("sfpc %0,%0" : : "d" (0));
+	}
+        putname(filename);
+out:
+        return error;
+}
+
 
 /*
  * fill in the FPU structure for a core dump.
Index: 2.6.18-rc1-mm1/arch/s390/kernel/syscalls.S
===================================================================
--- 2.6.18-rc1-mm1.orig/arch/s390/kernel/syscalls.S
+++ 2.6.18-rc1-mm1/arch/s390/kernel/syscalls.S
@@ -318,3 +318,4 @@ SYSCALL(sys_splice,sys_splice,sys_splice
 SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper)
 SYSCALL(sys_tee,sys_tee,sys_tee_wrapper)
 SYSCALL(sys_vmsplice,sys_vmsplice,compat_sys_vmsplice_wrapper)
+SYSCALL(sys_execns_glue,sys_execns_glue,sys_execns_glue)
Index: 2.6.18-rc1-mm1/arch/s390/kernel/entry64.S
===================================================================
--- 2.6.18-rc1-mm1.orig/arch/s390/kernel/entry64.S
+++ 2.6.18-rc1-mm1/arch/s390/kernel/entry64.S
@@ -403,6 +403,14 @@ sys_execve_glue:        
         bnz     0(%r12)               # it did fail -> store result in gpr2
         b       6(%r12)               # SKIP STG 2,SP_R2(15) in
                                       # system_call/sysc_tracesys
+sys_execns_glue:
+        la      %r2,SP_PTREGS(%r15)   # load pt_regs
+	lgr     %r12,%r14             # save return address
+        brasl   %r14,sys_execns       # call sys_execns
+        ltgr    %r2,%r2               # check if execns failed
+        bnz     0(%r12)               # it did fail -> store result in gpr2
+        b       6(%r12)               # SKIP STG 2,SP_R2(15) in
+                                      # system_call/sysc_tracesys
 #ifdef CONFIG_COMPAT
 sys32_execve_glue:        
         la      %r2,SP_PTREGS(%r15)   # load pt_regs
Index: 2.6.18-rc1-mm1/include/asm-s390/unistd.h
===================================================================
--- 2.6.18-rc1-mm1.orig/include/asm-s390/unistd.h
+++ 2.6.18-rc1-mm1/include/asm-s390/unistd.h
@@ -302,8 +302,9 @@
 #define __NR_sync_file_range	307
 #define __NR_tee		308
 #define __NR_vmsplice		309
+#define __NR_execns		310
 
-#define NR_syscalls 310
+#define NR_syscalls 311
 
 /* 
  * There are some system calls that are not present on 64 bit, some

--

  parent reply	other threads:[~2006-07-11  7:55 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-11  7:50 [PATCH -mm 0/7] execns syscall and user namespace Cedric Le Goater
2006-07-11  7:50 ` [PATCH -mm 1/7] add execns syscall core routine Cedric Le Goater
2006-07-11  7:50 ` Cedric Le Goater [this message]
2006-07-11 13:44   ` [PATCH -mm 2/7] add execns syscall to s390 Martin Schwidefsky
2006-07-11 13:44   ` Martin Schwidefsky
2006-07-11 14:44     ` Cedric Le Goater
2006-07-11 14:54       ` Martin Schwidefsky
2006-07-11 15:43         ` Cedric Le Goater
2006-07-11  7:50 ` [PATCH -mm 3/7] add execns syscall to x86_64 Cedric Le Goater
2006-07-11  7:50 ` [PATCH -mm 4/7] add execns syscall to i386 Cedric Le Goater
2006-07-11  7:50 ` [PATCH -mm 5/7] add user namespace Cedric Le Goater
2006-07-11 16:39   ` Kirill Korotaev
2006-07-11 17:38     ` Cedric Le Goater
2006-07-12 11:21       ` Kirill Korotaev
2006-07-13 16:01         ` Cedric Le Goater
2006-07-12  3:33     ` Eric W. Biederman
2006-07-12 11:13       ` Kirill Korotaev
2006-07-12 18:10         ` Eric W. Biederman
2006-07-13 17:00           ` Cedric Le Goater
2006-07-13 18:07             ` Eric W. Biederman
2006-07-13 18:21             ` Eric W. Biederman
2006-07-13 18:31               ` Dave Hansen
2006-07-13 18:54                 ` Eric W. Biederman
2006-07-12  3:46   ` Eric W. Biederman
2006-07-12 12:05     ` Herbert Poetzl
2006-07-12 17:09       ` Eric W. Biederman
2006-07-12 14:00     ` Cedric Le Goater
2006-07-12 17:24       ` Eric W. Biederman
2006-07-13 17:36         ` Cedric Le Goater
2006-07-13 17:47           ` Serge E. Hallyn
2006-07-13 18:14             ` Eric W. Biederman
2006-07-13 18:29               ` Dave Hansen
2006-07-13 19:02                 ` Eric W. Biederman
2006-07-13 20:03                   ` Dave Hansen
2006-07-14  3:45                     ` Eric W. Biederman
2006-07-14 14:28                       ` Dave Hansen
2006-07-14 15:13                         ` Eric W. Biederman
2006-07-14 16:29                           ` Serge E. Hallyn
2006-07-14 16:49                             ` Eric W. Biederman
2006-07-14 16:55                               ` Dave Hansen
2006-07-14 17:08                                 ` Serge E. Hallyn
2006-07-14 17:19                                   ` Dave Hansen
2006-07-14 17:36                                     ` Eric W. Biederman
2006-07-14 18:15                                       ` Trond Myklebust
2006-07-14 18:40                                         ` Eric W. Biederman
2006-07-14 21:04                                           ` Trond Myklebust
2006-07-15  4:09                                             ` Eric W. Biederman
2006-07-15  4:35                                               ` Kyle Moffett
2006-07-15 12:35                                                 ` Eric W. Biederman
2006-07-15 13:25                                                   ` Kyle Moffett
2006-07-15 15:54                                                   ` Dave Hansen
2006-07-15 17:01                                                   ` Trond Myklebust
2006-07-15 23:29                                                     ` Eric W. Biederman
2006-07-16 16:18                                                       ` Dave Hansen
2006-07-14 17:14                                 ` Eric W. Biederman
2006-07-16  8:36                                 ` Kirill Korotaev
2006-07-16 10:08                                   ` Eric W. Biederman
2006-07-14 17:05                               ` Serge E. Hallyn
2006-07-14 17:50                                 ` Kyle Moffett
2006-07-15 11:33                                   ` Serge E. Hallyn
2006-07-14 17:56                                 ` Eric W. Biederman
2006-07-14 16:35                           ` Dave Hansen
2006-07-13 21:41                   ` Serge E. Hallyn
2006-07-14  3:52                     ` Eric W. Biederman
2006-07-14 14:02                       ` Serge E. Hallyn
2006-07-14 14:50                         ` Eric W. Biederman
2006-07-14 16:39                           ` Serge E. Hallyn
2006-07-14 17:18                             ` Eric W. Biederman
2006-07-14 17:24                               ` Dave Hansen
2006-07-14 18:06                                 ` Eric W. Biederman
2006-07-14 18:42                                   ` Dave Hansen
2006-07-14 19:07                                     ` Eric W. Biederman
2006-07-13 17:59           ` Eric W. Biederman
2006-07-13 21:22             ` Serge E. Hallyn
2006-07-14  3:50               ` Eric W. Biederman
2006-07-14 14:17         ` Serge E. Hallyn
2006-07-14 15:05           ` Eric W. Biederman
2006-07-14 16:46             ` Serge E. Hallyn
2006-07-14 16:58               ` Eric W. Biederman
2006-07-14 15:43           ` Kyle Moffett
2006-07-14 16:13             ` Eric W. Biederman
2006-07-11  7:50 ` [PATCH -mm 6/7] add the user namespace to the execns syscall Cedric Le Goater
2006-07-11  7:50 ` [PATCH -mm 7/7] forbid the use of the unshare syscall on ipc namespaces Cedric Le Goater
2006-07-11 14:10   ` Kirill Korotaev
2006-07-11 15:06     ` Cedric Le Goater
2006-07-11  8:02 ` [PATCH -mm 0/7] execns syscall and user namespace Arjan van de Ven
2006-07-11  8:42   ` Cedric Le Goater
2006-07-11 18:12 ` H. Peter Anvin
2006-07-11 18:26   ` Cedric Le Goater
2006-07-11 18:28     ` H. Peter Anvin
2006-07-11 19:50       ` Ulrich Drepper
2006-07-11 21:50         ` Cedric Le Goater
2006-07-11 21:57           ` H. Peter Anvin
2006-07-12  0:16             ` Ulrich Drepper
2006-07-12  0:25               ` H. Peter Anvin
2006-07-12  0:28           ` H. Peter Anvin
2006-07-11 20:22 ` Eric W. Biederman
2006-07-11 21:28   ` Cedric Le Goater
2006-07-12  3:24     ` Eric W. Biederman
2006-07-12 13:05       ` Cedric Le Goater
2006-07-12 16:56         ` Eric W. Biederman
2006-07-13 16:13           ` Cedric Le Goater
2006-07-12 11:11   ` Kirill Korotaev
2006-07-12 13:10     ` Cedric Le Goater

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060711075409.113248000@localhost.localdomain \
    --to=clg@fr.ibm.com \
    --cc=akpm@osdl.org \
    --cc=dev@openvz.org \
    --cc=ebiederm@xmission.com \
    --cc=haveblue@us.ibm.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=herbert@13thfloor.at \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sam.vilain@catalyst.net.nz \
    --cc=saw@sw.ru \
    --cc=schwidefsky@de.ibm.com \
    --cc=serue@us.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.