From: "Randy.Dunlap" - sys_brk() is used in a few places but does not yet live in syscalls.h or unistd.h. - sys_mmap(): need to check on these - sys_execve(): need to check/rationalize/sanitize - still some sys_wait4() cleanups to be done --- arch/alpha/kernel/osf_sys.c | 1 - arch/h8300/kernel/signal.c | 3 +-- arch/ia64/ia32/sys_ia32.c | 6 +----- arch/m68k/kernel/signal.c | 1 + arch/m68knommu/kernel/signal.c | 3 +-- arch/parisc/hpux/sys_hpux.c | 2 -- arch/sparc/kernel/sys_sparc.c | 3 +-- arch/sparc64/kernel/sys_sparc.c | 2 -- arch/um/include/kern_util.h | 1 - arch/um/kernel/sys_call_table.c | 3 ++- include/asm-alpha/unistd.h | 4 ++++ include/asm-arm/unistd.h | 12 +++++++++--- include/asm-arm26/unistd.h | 12 +++++++++--- include/asm-cris/unistd.h | 15 +++++++++++++++ include/asm-h8300/unistd.h | 5 +++++ include/asm-i386/unistd.h | 10 ++++++++++ include/asm-ia64/unistd.h | 14 +++++++++++--- include/asm-m68k/unistd.h | 6 ++++++ include/asm-m68knommu/unistd.h | 4 ++++ include/asm-mips/unistd.h | 10 +++++++++- include/asm-parisc/unistd.h | 10 +++++++++- include/asm-ppc/unistd.h | 21 ++++++++++++++++++--- include/asm-ppc64/unistd.h | 18 +++++++++++++++--- include/asm-s390/unistd.h | 8 ++++++++ include/asm-sh/unistd.h | 21 +++++++++++++++++++++ include/asm-sparc/unistd.h | 6 +++++- include/asm-um/unistd.h | 9 +++++++++ include/asm-v850/unistd.h | 11 ++++++++--- include/asm-x86_64/unistd.h | 14 +++++++++----- include/linux/sched.h | 2 -- include/linux/syscalls.h | 20 +------------------- init/main.c | 2 ++ kernel/kmod.c | 1 + 33 files changed, 195 insertions(+), 65 deletions(-) diff -puN arch/alpha/kernel/osf_sys.c~add-syscalls_h-6 arch/alpha/kernel/osf_sys.c --- 25/arch/alpha/kernel/osf_sys.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/arch/alpha/kernel/osf_sys.c 2004-02-14 23:22:12.000000000 -0800 @@ -47,7 +47,6 @@ #include extern int do_pipe(int *); -extern asmlinkage unsigned long sys_brk(unsigned long); /* * Brk needs to return an error. Still support Linux's brk(0) query idiom, diff -puN arch/h8300/kernel/signal.c~add-syscalls_h-6 arch/h8300/kernel/signal.c --- 25/arch/h8300/kernel/signal.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/arch/h8300/kernel/signal.c 2004-02-14 23:22:12.000000000 -0800 @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -46,8 +47,6 @@ #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) -asmlinkage long sys_wait4(pid_t pid, unsigned int * stat_addr, int options, - struct rusage * ru); asmlinkage int do_signal(sigset_t *oldset, struct pt_regs *regs); /* diff -puN arch/ia64/ia32/sys_ia32.c~add-syscalls_h-6 arch/ia64/ia32/sys_ia32.c --- 25/arch/ia64/ia32/sys_ia32.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/arch/ia64/ia32/sys_ia32.c 2004-02-14 23:22:12.000000000 -0800 @@ -56,6 +56,7 @@ #include #include #include +#include #include "ia32priv.h" @@ -82,14 +83,9 @@ #define high2lowuid(uid) ((uid) > 65535 ? 65534 : (uid)) #define high2lowgid(gid) ((gid) > 65535 ? 65534 : (gid)) -extern asmlinkage long sys_execve (char *, char **, char **, struct pt_regs *); extern unsigned long arch_get_unmapped_area (struct file *, unsigned long, unsigned long, unsigned long, unsigned long); -/* forward declaration: */ -asmlinkage long sys32_mprotect (unsigned int, unsigned int, int); -asmlinkage unsigned long sys_brk(unsigned long); - /* * Anything that modifies or inspects ia32 user virtual memory must hold this semaphore * while doing so. diff -puN arch/m68k/kernel/signal.c~add-syscalls_h-6 arch/m68k/kernel/signal.c --- 25/arch/m68k/kernel/signal.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/arch/m68k/kernel/signal.c 2004-02-14 23:22:12.000000000 -0800 @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff -puN arch/m68knommu/kernel/signal.c~add-syscalls_h-6 arch/m68knommu/kernel/signal.c --- 25/arch/m68knommu/kernel/signal.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/arch/m68knommu/kernel/signal.c 2004-02-14 23:22:12.000000000 -0800 @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -50,8 +51,6 @@ #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) -asmlinkage long sys_wait4(pid_t pid, unsigned int * stat_addr, int options, - struct rusage * ru); asmlinkage int do_signal(sigset_t *oldset, struct pt_regs *regs); /* diff -puN arch/parisc/hpux/sys_hpux.c~add-syscalls_h-6 arch/parisc/hpux/sys_hpux.c --- 25/arch/parisc/hpux/sys_hpux.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/arch/parisc/hpux/sys_hpux.c 2004-02-14 23:22:12.000000000 -0800 @@ -35,8 +35,6 @@ #include #include -unsigned long sys_brk(unsigned long addr); - unsigned long hpux_brk(unsigned long addr) { /* Sigh. Looks like HP/UX libc relies on kernel bugs. */ diff -puN arch/sparc64/kernel/sys_sparc.c~add-syscalls_h-6 arch/sparc64/kernel/sys_sparc.c --- 25/arch/sparc64/kernel/sys_sparc.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/arch/sparc64/kernel/sys_sparc.c 2004-02-14 23:22:12.000000000 -0800 @@ -162,8 +162,6 @@ unsigned long get_fb_unmapped_area(struc return addr; } -extern asmlinkage unsigned long sys_brk(unsigned long brk); - asmlinkage unsigned long sparc_brk(unsigned long brk) { /* People could try to be nasty and use ta 0x6d in 32bit programs */ diff -puN arch/sparc/kernel/sys_sparc.c~add-syscalls_h-6 arch/sparc/kernel/sys_sparc.c --- 25/arch/sparc/kernel/sys_sparc.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/arch/sparc/kernel/sys_sparc.c 2004-02-14 23:22:12.000000000 -0800 @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -78,8 +79,6 @@ unsigned long arch_get_unmapped_area(str } } -extern asmlinkage unsigned long sys_brk(unsigned long brk); - asmlinkage unsigned long sparc_brk(unsigned long brk) { if(ARCH_SUN4C_SUN4) { diff -puN arch/um/include/kern_util.h~add-syscalls_h-6 arch/um/include/kern_util.h --- 25/arch/um/include/kern_util.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/arch/um/include/kern_util.h 2004-02-14 23:22:12.000000000 -0800 @@ -45,7 +45,6 @@ extern int page_mask(void); extern int need_finish_fork(void); extern void free_stack(unsigned long stack, int order); extern void add_input_request(int op, void (*proc)(int), void *arg); -extern int sys_execve(char *file, char **argv, char **env); extern char *current_cmd(void); extern void timer_handler(int sig, union uml_pt_regs *regs); extern int set_signals(int enable); diff -puN arch/um/kernel/sys_call_table.c~add-syscalls_h-6 arch/um/kernel/sys_call_table.c --- 25/arch/um/kernel/sys_call_table.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/arch/um/kernel/sys_call_table.c 2004-02-14 23:22:12.000000000 -0800 @@ -8,6 +8,7 @@ #include "linux/version.h" #include "linux/sys.h" #include "linux/swap.h" +#include "linux/syscalls.h" #include "linux/sysctl.h" #include "asm/signal.h" #include "sysdep/syscalls.h" @@ -268,9 +269,9 @@ syscall_handler_t *sys_call_table[] = { [ __NR_creat ] = sys_creat, [ __NR_link ] = sys_link, [ __NR_unlink ] = sys_unlink, + [ __NR_execve ] = (syscall_handler_t *) sys_execve, /* declared differently in kern_util.h */ - [ __NR_execve ] = (syscall_handler_t *) sys_execve, [ __NR_chdir ] = sys_chdir, [ __NR_time ] = um_time, [ __NR_mknod ] = sys_mknod, diff -puN include/asm-alpha/unistd.h~add-syscalls_h-6 include/asm-alpha/unistd.h --- 25/include/asm-alpha/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-alpha/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -600,6 +600,10 @@ static inline pid_t waitpid(int pid, int return sys_wait4(pid, wait_stat, flags, NULL); } +asmlinkage int sys_execve(char *ufilename, char **argv, char **envp, + unsigned long a3, unsigned long a4, unsigned long a5, + struct pt_regs regs); + #endif /* __KERNEL_SYSCALLS__ */ /* diff -puN include/asm-arm26/unistd.h~add-syscalls_h-6 include/asm-arm26/unistd.h --- 25/include/asm-arm26/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-arm26/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -14,7 +14,6 @@ #define __ASM_ARM_UNISTD_H #include -#include #define __NR_SYSCALL_BASE 0x900000 @@ -378,8 +377,7 @@ type name(type1 arg1, type2 arg2, type3 #ifdef __KERNEL_SYSCALLS__ -struct rusage; -asmlinkage long sys_wait4(pid_t pid,unsigned int * stat_addr, int options, struct rusage * ru); +#include static inline long idle(void) { @@ -452,6 +450,14 @@ static inline pid_t wait(int * wait_stat return sys_wait4(-1, wait_stat, 0, NULL); } +struct pt_regs; +asmlinkage int sys_execve(char *filenamei, char **argv, char **envp, + struct pt_regs *regs); +asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, + struct pt_regs *regs); +asmlinkage int sys_fork(struct pt_regs *regs); +asmlinkage int sys_vfork(struct pt_regs *regs); + /* * The following two can't be eliminated yet - they rely on * specific conditions. diff -puN include/asm-arm/unistd.h~add-syscalls_h-6 include/asm-arm/unistd.h --- 25/include/asm-arm/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-arm/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -14,7 +14,6 @@ #define __ASM_ARM_UNISTD_H #include -#include #if defined(__thumb__) #define __NR_SYSCALL_BASE 0 @@ -451,8 +450,7 @@ type name(type1 arg1, type2 arg2, type3 #ifdef __KERNEL_SYSCALLS__ -struct rusage; -asmlinkage long sys_wait4(pid_t pid,unsigned int * stat_addr, int options, struct rusage * ru); +#include static inline pid_t setsid(void) { @@ -499,6 +497,14 @@ static inline pid_t waitpid(pid_t pid, i return sys_wait4((int)pid, wait_stat, options, NULL); } +struct pt_regs; +asmlinkage int sys_execve(char *filenamei, char **argv, char **envp, + struct pt_regs *regs); +asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, + struct pt_regs *regs); +asmlinkage int sys_fork(struct pt_regs *regs); +asmlinkage int sys_vfork(struct pt_regs *regs); + /* * The following two can't be eliminated yet - they rely on * specific conditions. diff -puN include/asm-cris/unistd.h~add-syscalls_h-6 include/asm-cris/unistd.h --- 25/include/asm-cris/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-cris/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -305,6 +305,21 @@ extern inline _syscall3(int,execve,const extern inline _syscall3(int,open,const char *,file,int,flag,int,mode) extern inline _syscall1(int,close,int,fd) +asmlinkage long sys_mmap2( + unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +struct pt_regs; +asmlinkage int sys_execve(const char *fname, char **argv, char **envp, + long r13, long mof, long srp, struct pt_regs *regs); +asmlinkage int sys_clone(unsigned long newusp, unsigned long flags, + int* parent_tid, int* child_tid, long mof, long srp, + struct pt_regs *regs); +asmlinkage int sys_fork(long r10, long r11, long r12, long r13, + long mof, long srp, struct pt_regs *regs); +asmlinkage int sys_vfork(long r10, long r11, long r12, long r13, + long mof, long srp, struct pt_regs *regs); + /* * Since we define it "external", it collides with the built-in * definition, which has the "noreturn" attribute and will cause diff -puN include/asm-h8300/unistd.h~add-syscalls_h-6 include/asm-h8300/unistd.h --- 25/include/asm-h8300/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-h8300/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -479,6 +479,11 @@ static inline pid_t wait(int * wait_stat { return waitpid(-1,wait_stat,0); } +asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +asmlinkage int sys_execve(char *name, char **argv, char **envp, + int dummy, ...); #endif diff -puN include/asm-i386/unistd.h~add-syscalls_h-6 include/asm-i386/unistd.h --- 25/include/asm-i386/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-i386/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -373,6 +373,8 @@ __syscall_return(type,__res); \ #ifdef __KERNEL_SYSCALLS__ +#include + /* * we need this inline - forking from kernel space will result * in NO COPY ON WRITE (!!!), until an execve is executed. This @@ -396,6 +398,14 @@ static inline _syscall1(int,close,int,fd static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) asmlinkage int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount); +asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +asmlinkage int sys_execve(struct pt_regs regs); +asmlinkage int sys_clone(struct pt_regs regs); +asmlinkage int sys_fork(struct pt_regs regs); +asmlinkage int sys_vfork(struct pt_regs regs); + #endif /* diff -puN include/asm-ia64/unistd.h~add-syscalls_h-6 include/asm-ia64/unistd.h --- 25/include/asm-ia64/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-ia64/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -8,6 +8,7 @@ * David Mosberger-Tang */ +#include #include #define __BREAK_SYSCALL __IA64_BREAK_SYSCALL @@ -326,12 +327,19 @@ waitpid (int pid, int * wait_stat, int f extern int execve (const char *filename, char *const av[], char *const ep[]); extern pid_t clone (unsigned long flags, void *sp); -extern asmlinkage unsigned long sys_mmap( +#endif /* __KERNEL_SYSCALLS__ */ + +asmlinkage unsigned long sys_mmap( unsigned long addr, unsigned long len, int prot, int flags, int fd, long off); - -#endif /* __KERNEL_SYSCALLS__ */ +asmlinkage unsigned long sys_mmap2( + unsigned long addr, unsigned long len, + int prot, int flags, + int fd, long pgoff); +struct pt_regs; +asmlinkage long sys_execve(char *filename, char **argv, char **envp, + struct pt_regs *regs); /* * "Conditional" syscalls diff -puN include/asm-m68knommu/unistd.h~add-syscalls_h-6 include/asm-m68knommu/unistd.h --- 25/include/asm-m68knommu/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-m68knommu/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -406,6 +406,10 @@ static inline pid_t wait(int * wait_stat { return waitpid(-1,wait_stat,0); } +asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +asmlinkage int sys_execve(char *name, char **argv, char **envp); #endif diff -puN include/asm-m68k/unistd.h~add-syscalls_h-6 include/asm-m68k/unistd.h --- 25/include/asm-m68k/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-m68k/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -363,6 +363,12 @@ static inline _syscall1(int,close,int,fd static inline _syscall1(int,_exit,int,exitcode) static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) +asmlinkage long sys_mmap2( + unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +asmlinkage int sys_execve(char *name, char **argv, char **envp); + #endif /* diff -puN include/asm-mips/unistd.h~add-syscalls_h-6 include/asm-mips/unistd.h --- 25/include/asm-mips/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-mips/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -1047,6 +1047,9 @@ type name (atype a,btype b,ctype c,dtype #ifdef __KERNEL_SYSCALLS__ +#include +#include + /* * we need this inline - forking from kernel space will result * in NO COPY ON WRITE (!!!), until an execve is executed. This @@ -1077,10 +1080,15 @@ static inline pid_t waitpid(int pid, int return wait4(pid, wait_stat, flags, NULL); } -extern asmlinkage unsigned long sys_mmap( +asmlinkage unsigned long sys_mmap( unsigned long addr, size_t len, int prot, int flags, int fd, off_t offset); +asmlinkage long sys_mmap2( + unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +asmlinkage int sys_execve(nabi_no_regargs struct pt_regs regs); #endif /* __KERNEL_SYSCALLS__ */ #endif /* !__ASSEMBLY__ */ diff -puN include/asm-parisc/unistd.h~add-syscalls_h-6 include/asm-parisc/unistd.h --- 25/include/asm-parisc/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-parisc/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -894,9 +894,17 @@ static inline pid_t waitpid(pid_t pid, i return sys_wait4(pid, wait_stat, options, NULL); } -extern asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, +asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long fd, unsigned long offset); +asmlinkage unsigned long sys_mmap2(unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +struct pt_regs; +asmlinkage int sys_execve(struct pt_regs *regs); +int sys_clone(unsigned long clone_flags, unsigned long usp, + struct pt_regs *regs); +int sys_vfork(struct pt_regs *regs); #endif /* __KERNEL_SYSCALLS__ */ diff -puN include/asm-ppc64/unistd.h~add-syscalls_h-6 include/asm-ppc64/unistd.h --- 25/include/asm-ppc64/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-ppc64/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -410,9 +410,21 @@ extern pid_t waitpid(pid_t pid, int *wai #endif /* __KERNEL_SYSCALLS__ */ asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len, - unsigned long prot, unsigned long flags, - unsigned long fd, off_t offset); - + unsigned long prot, unsigned long flags, + unsigned long fd, off_t offset); +struct pt_regs; +int sys_execve(unsigned long a0, unsigned long a1, unsigned long a2, + unsigned long a3, unsigned long a4, unsigned long a5, + struct pt_regs *regs); +int sys_clone(unsigned long clone_flags, unsigned long p2, unsigned long p3, + unsigned long p4, unsigned long p5, unsigned long p6, + struct pt_regs *regs); +int sys_fork(unsigned long p1, unsigned long p2, unsigned long p3, + unsigned long p4, unsigned long p5, unsigned long p6, + struct pt_regs *regs); +int sys_vfork(unsigned long p1, unsigned long p2, unsigned long p3, + unsigned long p4, unsigned long p5, unsigned long p6, + struct pt_regs *regs); /* * "Conditional" syscalls diff -puN include/asm-ppc/unistd.h~add-syscalls_h-6 include/asm-ppc/unistd.h --- 25/include/asm-ppc/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-ppc/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -390,9 +390,24 @@ extern int open(const char *file, int fl extern int close(int fd); extern pid_t waitpid(pid_t pid, int *wait_stat, int options); -extern unsigned long sys_mmap(unsigned long addr, size_t len, - unsigned long prot, unsigned long flags, - unsigned long fd, off_t offset); +unsigned long sys_mmap(unsigned long addr, size_t len, + unsigned long prot, unsigned long flags, + unsigned long fd, off_t offset); +unsigned long sys_mmap2(unsigned long addr, size_t len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +struct pt_regs; +int sys_execve(unsigned long a0, unsigned long a1, unsigned long a2, + unsigned long a3, unsigned long a4, unsigned long a5, + struct pt_regs *regs); +int sys_clone(unsigned long clone_flags, unsigned long usp, + int __user *parent_tidp, void __user *child_threadptr, + int __user *child_tidp, int p6, + struct pt_regs *regs); +int sys_fork(int p1, int p2, int p3, int p4, int p5, int p6, + struct pt_regs *regs); +int sys_vfork(int p1, int p2, int p3, int p4, int p5, int p6, + struct pt_regs *regs); #endif /* __KERNEL_SYSCALLS__ */ diff -puN include/asm-s390/unistd.h~add-syscalls_h-6 include/asm-s390/unistd.h --- 25/include/asm-s390/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-s390/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -505,6 +505,7 @@ type name(type1 arg1, type2 arg2, type3 #ifdef __KERNEL_SYSCALLS__ +#include #include #include @@ -536,6 +537,13 @@ static inline pid_t waitpid(int pid, int { return sys_wait4(pid, wait_stat, flags, NULL); } +struct mmap_arg_struct; +asmlinkage long sys_mmap2(struct mmap_arg_struct *arg); + +asmlinkage int sys_execve(struct pt_regs regs); +asmlinkage int sys_clone(struct pt_regs regs); +asmlinkage int sys_fork(struct pt_regs regs); +asmlinkage int sys_vfork(struct pt_regs regs); #endif diff -puN include/asm-sh/unistd.h~add-syscalls_h-6 include/asm-sh/unistd.h --- 25/include/asm-sh/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-sh/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -402,6 +402,8 @@ __syscall_return(type,__sc0); \ #ifdef __KERNEL_SYSCALLS__ +#include + /* * we need this inline - forking from kernel space will result * in NO COPY ON WRITE (!!!), until an execve is executed. This @@ -433,6 +435,25 @@ static __inline__ pid_t wait(int * wait_ { return waitpid(-1,wait_stat,0); } + +asmlinkage long sys_mmap2( + unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +asmlinkage int sys_execve(char *ufilename, char **uargv, + char **uenvp, unsigned long r7, + struct pt_regs regs); +asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, + unsigned long parent_tidptr, + unsigned long child_tidptr, + struct pt_regs regs); +asmlinkage int sys_fork(unsigned long r4, unsigned long r5, + unsigned long r6, unsigned long r7, + struct pt_regs regs); +asmlinkage int sys_vfork(unsigned long r4, unsigned long r5, + unsigned long r6, unsigned long r7, + struct pt_regs regs); + #endif /* diff -puN include/asm-sparc/unistd.h~add-syscalls_h-6 include/asm-sparc/unistd.h --- 25/include/asm-sparc/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-sparc/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -450,10 +450,14 @@ static __inline__ _syscall1(int,close,in static __inline__ _syscall1(int,_exit,int,exitcode) static __inline__ _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) -extern asmlinkage unsigned long sys_mmap( +asmlinkage unsigned long sys_mmap( unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long fd, unsigned long off); +asmlinkage unsigned long sys_mmap2( + unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); #endif /* __KERNEL_SYSCALLS__ */ diff -puN include/asm-um/unistd.h~add-syscalls_h-6 include/asm-um/unistd.h --- 25/include/asm-um/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-um/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -68,6 +68,15 @@ static inline int write(unsigned int fd, KERNEL_CALL(int, sys_write, fd, buf, len) } +long sys_mmap2(unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +int sys_execve(char *file, char **argv, char **env); +long sys_clone(unsigned long clone_flags, unsigned long newsp, + int *parent_tid, int *child_tid); +long sys_fork(void); +long sys_vfork(void); + #endif /* Save the value of __KERNEL_SYSCALLS__, undefine it, include the underlying diff -puN include/asm-v850/unistd.h~add-syscalls_h-6 include/asm-v850/unistd.h --- 25/include/asm-v850/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-v850/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -417,9 +417,14 @@ extern inline pid_t wait(int * wait_stat return waitpid (-1, wait_stat, 0); } -extern unsigned long sys_mmap(unsigned long addr, size_t len, - unsigned long prot, unsigned long flags, - unsigned long fd, off_t offset); +unsigned long sys_mmap(unsigned long addr, size_t len, + unsigned long prot, unsigned long flags, + unsigned long fd, off_t offset); +unsigned long sys_mmap2(unsigned long addr, size_t len, + unsigned long prot, unsigned long flags, + unsigned long fd, unsigned long pgoff); +struct pt_regs; +int sys_execve (char *name, char **argv, char **envp, struct pt_regs *regs); #endif diff -puN include/asm-x86_64/unistd.h~add-syscalls_h-6 include/asm-x86_64/unistd.h --- 25/include/asm-x86_64/unistd.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/asm-x86_64/unistd.h 2004-02-14 23:22:12.000000000 -0800 @@ -637,6 +637,7 @@ __syscall_return(type,__res); \ #else /* __KERNEL_SYSCALLS__ */ #include +#include /* * we need this inline - forking from kernel space will result @@ -690,11 +691,6 @@ static inline long close(unsigned int fd return sys_close(fd); } -static inline void exit(int error_code) -{ - sys_exit(error_code); -} - static inline pid_t waitpid(int pid, int * wait_stat, int flags) { return sys_wait4(pid, wait_stat, flags, NULL); @@ -706,6 +702,14 @@ extern long sys_mmap(unsigned long addr, extern int sys_modify_ldt(int func, void *ptr, unsigned long bytecount); +asmlinkage long sys_execve(char *name, char **argv, char **envp, + struct pt_regs regs); +asmlinkage long sys_clone(unsigned long clone_flags, unsigned long newsp, + void *parent_tid, void *child_tid, + struct pt_regs regs); +asmlinkage long sys_fork(struct pt_regs regs); +asmlinkage long sys_vfork(struct pt_regs regs); + #endif /* __KERNEL_SYSCALLS__ */ #endif /* __NO_STUBS */ diff -puN include/linux/sched.h~add-syscalls_h-6 include/linux/sched.h --- 25/include/linux/sched.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/linux/sched.h 2004-02-14 23:22:12.000000000 -0800 @@ -699,8 +699,6 @@ extern void FASTCALL(wake_up_forked_proc extern void FASTCALL(sched_fork(task_t * p)); extern void FASTCALL(sched_exit(task_t * p)); -asmlinkage long sys_wait4(pid_t pid,unsigned int * stat_addr, int options, struct rusage * ru); - extern int in_group_p(gid_t); extern int in_egroup_p(gid_t); diff -puN include/linux/syscalls.h~add-syscalls_h-6 include/linux/syscalls.h --- 25/include/linux/syscalls.h~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/include/linux/syscalls.h 2004-02-14 23:22:12.000000000 -0800 @@ -66,9 +66,7 @@ asmlinkage long sys_times(struct tms __u asmlinkage long sys_gettid(void); asmlinkage long sys_nanosleep(struct timespec *rqtp, struct timespec *rmtp); -#if !defined(__alpha__) && !defined(__ia64__) asmlinkage unsigned long sys_alarm(unsigned int seconds); -#endif asmlinkage long sys_getpid(void); asmlinkage long sys_getppid(void); asmlinkage long sys_getuid(void); @@ -102,10 +100,8 @@ asmlinkage long sys_capset(cap_user_head asmlinkage long sys_personality(u_long personality); asmlinkage long sys_sigpending(old_sigset_t __user *set); -#if !defined(__alpha__) asmlinkage long sys_sigprocmask(int how, old_sigset_t __user *set, old_sigset_t __user *oset); -#endif asmlinkage long sys_getitimer(int which, struct itimerval __user *value); asmlinkage long sys_setitimer(int which, struct itimerval __user *value, @@ -127,9 +123,7 @@ asmlinkage long sys_clock_nanosleep(cloc const struct timespec __user *rqtp, struct timespec __user *rmtp); -#ifndef __alpha__ asmlinkage long sys_nice(int increment); -#endif asmlinkage long sys_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param); asmlinkage long sys_sched_setparam(pid_t pid, @@ -158,9 +152,7 @@ asmlinkage long sys_exit(int error_code) asmlinkage void sys_exit_group(int error_code); asmlinkage long sys_wait4(pid_t pid, unsigned int *stat_addr, int options, struct rusage *ru); -#if !defined(__alpha__) && !defined(__ia64__) && !defined(__arm__) asmlinkage long sys_waitpid(pid_t pid, unsigned int *stat_addr, int options); -#endif asmlinkage long sys_set_tid_address(int __user *tidptr); asmlinkage long sys_futex(u32 __user *uaddr, int op, int val, struct timespec __user *utime, u32 __user *uaddr2); @@ -185,23 +177,14 @@ asmlinkage long sys_kill(int pid, int si asmlinkage long sys_tgkill(int tgid, int pid, int sig); asmlinkage long sys_tkill(int pid, int sig); asmlinkage long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo); -#ifndef __sparc__ asmlinkage long sys_rt_sigaction(int sig, const struct sigaction __user *act, struct sigaction __user *oact, size_t sigsetsize); -#endif -#if !defined(__alpha__) && !defined(__ia64__) && !defined(__arm__) asmlinkage long sys_sgetmask(void); asmlinkage long sys_ssetmask(int newmask); -#endif -#if !defined(__alpha__) && !defined(__ia64__) && !defined(__mips__) && \ - !defined(__arm__) asmlinkage unsigned long sys_signal(int sig, __sighandler_t handler); -#endif -#ifndef HAVE_ARCH_SYS_PAUSE asmlinkage long sys_pause(void); -#endif asmlinkage long sys_sync(void); asmlinkage long sys_fsync(unsigned int fd); @@ -258,6 +241,7 @@ asmlinkage long sys_removexattr(char __u asmlinkage long sys_lremovexattr(char __user *path, char __user *name); asmlinkage long sys_fremovexattr(int fd, char __user *name); +asmlinkage unsigned long sys_brk(unsigned long brk); asmlinkage long sys_mprotect(unsigned long start, size_t len, unsigned long prot); asmlinkage unsigned long sys_mremap(unsigned long addr, @@ -348,11 +332,9 @@ asmlinkage long sys_utimes(char __user * struct timeval __user *utimes); asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin); -#if !defined(__alpha__) asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high, unsigned long offset_low, loff_t __user *result, unsigned int origin); -#endif asmlinkage ssize_t sys_read(unsigned int fd, char __user *buf, size_t count); asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count); diff -puN init/main.c~add-syscalls_h-6 init/main.c --- 25/init/main.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/init/main.c 2004-02-14 23:22:12.000000000 -0800 @@ -12,10 +12,12 @@ #define __KERNEL_SYSCALLS__ #include +#include #include #include #include #include +#include #include #include #include diff -puN kernel/kmod.c~add-syscalls_h-6 kernel/kmod.c --- 25/kernel/kmod.c~add-syscalls_h-6 2004-02-14 23:22:12.000000000 -0800 +++ 25-akpm/kernel/kmod.c 2004-02-14 23:22:12.000000000 -0800 @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include _