Message ID | 20190715203326.GA25932@ls3530.fritz.box (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | parisc: Wire up clone3 syscall | expand |
On Mon, Jul 15, 2019 at 10:33:26PM +0200, Helge Deller wrote: > Untested patch to wire up the clone3 syscall. From what I can see from your entry points the treatment for fork and clone the relevant bit is: .macro fork_like name ENTRY_CFI(sys_\name\()_wrapper) LDREG TI_TASK-THREAD_SZ_ALGN-FRAME_SIZE(%r30), %r1 ldo TASK_REGS(%r1),%r1 reg_save %r1 mfctl %cr27, %r28 ldil L%sys_\name, %r31 be R%sys_\name(%sr4,%r31) STREG %r28, PT_CR27(%r1) ENDPROC_CFI(sys_\name\()_wrapper) .endm Which seems to be identical for fork(), vfork(), and clone(). So parisc doesn't seem to have to muck with any clone-specific args. If that's the case things should be fine for clone3 on parisc. I only expect issues for arches that need to shove around specific arguments for clone. > > Signed-off-by: Helge Deller <deller@gmx.de> > > diff --git a/arch/parisc/include/asm/unistd.h b/arch/parisc/include/asm/unistd.h > index b0838dc4dfee..cd438e4150f6 100644 > --- a/arch/parisc/include/asm/unistd.h > +++ b/arch/parisc/include/asm/unistd.h > @@ -166,6 +166,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ > #define __ARCH_WANT_SYS_FORK > #define __ARCH_WANT_SYS_VFORK > #define __ARCH_WANT_SYS_CLONE > +#define __ARCH_WANT_SYS_CLONE3 > #define __ARCH_WANT_COMPAT_SYS_SENDFILE > > #ifdef CONFIG_64BIT > diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S > index 3e430590c1e1..d9d3387f7c47 100644 > --- a/arch/parisc/kernel/entry.S > +++ b/arch/parisc/kernel/entry.S > @@ -1732,6 +1732,7 @@ ENDPROC_CFI(sys_\name\()_wrapper) > .endm > > fork_like clone > +fork_like clone3 > fork_like fork > fork_like vfork > > diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl > index 5022b9e179c2..670d1371aca1 100644 > --- a/arch/parisc/kernel/syscalls/syscall.tbl > +++ b/arch/parisc/kernel/syscalls/syscall.tbl > @@ -431,3 +431,4 @@ > 432 common fsmount sys_fsmount > 433 common fspick sys_fspick > 434 common pidfd_open sys_pidfd_open > +435 common clone3 sys_clone3_wrapper
diff --git a/arch/parisc/include/asm/unistd.h b/arch/parisc/include/asm/unistd.h index b0838dc4dfee..cd438e4150f6 100644 --- a/arch/parisc/include/asm/unistd.h +++ b/arch/parisc/include/asm/unistd.h @@ -166,6 +166,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ #define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_VFORK #define __ARCH_WANT_SYS_CLONE +#define __ARCH_WANT_SYS_CLONE3 #define __ARCH_WANT_COMPAT_SYS_SENDFILE #ifdef CONFIG_64BIT diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 3e430590c1e1..d9d3387f7c47 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S @@ -1732,6 +1732,7 @@ ENDPROC_CFI(sys_\name\()_wrapper) .endm fork_like clone +fork_like clone3 fork_like fork fork_like vfork diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl index 5022b9e179c2..670d1371aca1 100644 --- a/arch/parisc/kernel/syscalls/syscall.tbl +++ b/arch/parisc/kernel/syscalls/syscall.tbl @@ -431,3 +431,4 @@ 432 common fsmount sys_fsmount 433 common fspick sys_fspick 434 common pidfd_open sys_pidfd_open +435 common clone3 sys_clone3_wrapper
Untested patch to wire up the clone3 syscall. Signed-off-by: Helge Deller <deller@gmx.de>