Merge branch 'syscalls' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'syscalls' of git://git390.osdl.marist.edu/pub/scm/linux-2.6: (44 commits) [CVE-2009-0029] s390 specific system call wrappers [CVE-2009-0029] System call wrappers part 33 [CVE-2009-0029] System call wrappers part 32 [CVE-2009-0029] System call wrappers part 31 [CVE-2009-0029] System call wrappers part 30 [CVE-2009-0029] System call wrappers part 29 [CVE-2009-0029] System call wrappers part 28 [CVE-2009-0029] System call wrappers part 27 [CVE-2009-0029] System call wrappers part 26 [CVE-2009-0029] System call wrappers part 25 [CVE-2009-0029] System call wrappers part 24 [CVE-2009-0029] System call wrappers part 23 [CVE-2009-0029] System call wrappers part 22 [CVE-2009-0029] System call wrappers part 21 [CVE-2009-0029] System call wrappers part 20 [CVE-2009-0029] System call wrappers part 19 [CVE-2009-0029] System call wrappers part 18 [CVE-2009-0029] System call wrappers part 17 [CVE-2009-0029] System call wrappers part 16 [CVE-2009-0029] System call wrappers part 15 ...
This commit is contained in:
Коммит
bca268565f
|
@ -62,6 +62,9 @@ config HAVE_EFFICIENT_UNALIGNED_ACCESS
|
|||
See Documentation/unaligned-memory-access.txt for more
|
||||
information on the topic of unaligned memory accesses.
|
||||
|
||||
config HAVE_SYSCALL_WRAPPERS
|
||||
bool
|
||||
|
||||
config KRETPROBES
|
||||
def_bool y
|
||||
depends on KPROBES && HAVE_KRETPROBES
|
||||
|
|
|
@ -896,9 +896,9 @@ sys_getxpid:
|
|||
.end sys_getxpid
|
||||
|
||||
.align 4
|
||||
.globl sys_pipe
|
||||
.ent sys_pipe
|
||||
sys_pipe:
|
||||
.globl sys_alpha_pipe
|
||||
.ent sys_alpha_pipe
|
||||
sys_alpha_pipe:
|
||||
lda $sp, -16($sp)
|
||||
stq $26, 0($sp)
|
||||
.prologue 0
|
||||
|
@ -916,7 +916,7 @@ sys_pipe:
|
|||
stq $1, 80+16($sp)
|
||||
1: lda $sp, 16($sp)
|
||||
ret
|
||||
.end sys_pipe
|
||||
.end sys_alpha_pipe
|
||||
|
||||
.align 4
|
||||
.globl sys_execve
|
||||
|
|
|
@ -52,7 +52,7 @@ sys_call_table:
|
|||
.quad sys_setpgid
|
||||
.quad alpha_ni_syscall /* 40 */
|
||||
.quad sys_dup
|
||||
.quad sys_pipe
|
||||
.quad sys_alpha_pipe
|
||||
.quad osf_set_program_attributes
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_open /* 45 */
|
||||
|
|
|
@ -98,7 +98,7 @@
|
|||
CALL(sys_uselib)
|
||||
CALL(sys_swapon)
|
||||
CALL(sys_reboot)
|
||||
CALL(OBSOLETE(old_readdir)) /* used by libc4 */
|
||||
CALL(OBSOLETE(sys_old_readdir)) /* used by libc4 */
|
||||
/* 90 */ CALL(OBSOLETE(old_mmap)) /* used by libc4 */
|
||||
CALL(sys_munmap)
|
||||
CALL(sys_truncate)
|
||||
|
|
|
@ -691,7 +691,7 @@ sys_call_table:
|
|||
.long sys_uselib
|
||||
.long sys_swapon
|
||||
.long sys_reboot
|
||||
.long old_readdir
|
||||
.long sys_old_readdir
|
||||
.long old_mmap /* 90 */
|
||||
.long sys_munmap
|
||||
.long sys_truncate
|
||||
|
|
|
@ -614,7 +614,7 @@ sys_call_table:
|
|||
.long sys_uselib
|
||||
.long sys_swapon
|
||||
.long sys_reboot
|
||||
.long old_readdir
|
||||
.long sys_old_readdir
|
||||
.long old_mmap /* 90 */
|
||||
.long sys_munmap
|
||||
.long sys_truncate
|
||||
|
|
|
@ -103,7 +103,7 @@ SYMBOL_NAME_LABEL(sys_call_table)
|
|||
.long SYMBOL_NAME(sys_uselib)
|
||||
.long SYMBOL_NAME(sys_swapon)
|
||||
.long SYMBOL_NAME(sys_reboot)
|
||||
.long SYMBOL_NAME(old_readdir)
|
||||
.long SYMBOL_NAME(sys_old_readdir)
|
||||
.long SYMBOL_NAME(old_mmap) /* 90 */
|
||||
.long SYMBOL_NAME(sys_munmap)
|
||||
.long SYMBOL_NAME(sys_truncate)
|
||||
|
|
|
@ -220,7 +220,7 @@ ia32_syscall_table:
|
|||
data8 sys_mkdir
|
||||
data8 sys_rmdir /* 40 */
|
||||
data8 sys_dup
|
||||
data8 sys_pipe
|
||||
data8 sys_ia64_pipe
|
||||
data8 compat_sys_times
|
||||
data8 sys_ni_syscall /* old prof syscall holder */
|
||||
data8 sys32_brk /* 45 */
|
||||
|
|
|
@ -364,7 +364,7 @@ struct pt_regs;
|
|||
struct sigaction;
|
||||
long sys_execve(char __user *filename, char __user * __user *argv,
|
||||
char __user * __user *envp, struct pt_regs *regs);
|
||||
asmlinkage long sys_pipe(void);
|
||||
asmlinkage long sys_ia64_pipe(void);
|
||||
asmlinkage long sys_rt_sigaction(int sig,
|
||||
const struct sigaction __user *act,
|
||||
struct sigaction __user *oact,
|
||||
|
|
|
@ -1442,7 +1442,7 @@ sys_call_table:
|
|||
data8 sys_mkdir // 1055
|
||||
data8 sys_rmdir
|
||||
data8 sys_dup
|
||||
data8 sys_pipe
|
||||
data8 sys_ia64_pipe
|
||||
data8 sys_times
|
||||
data8 ia64_brk // 1060
|
||||
data8 sys_setgid
|
||||
|
|
|
@ -154,7 +154,7 @@ out:
|
|||
* and r9) as this is faster than doing a copy_to_user().
|
||||
*/
|
||||
asmlinkage long
|
||||
sys_pipe (void)
|
||||
sys_ia64_pipe (void)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
int fd[2];
|
||||
|
|
|
@ -513,7 +513,7 @@ sys_call_table:
|
|||
.long sys_uselib
|
||||
.long sys_swapon
|
||||
.long sys_reboot
|
||||
.long old_readdir
|
||||
.long sys_old_readdir
|
||||
.long old_mmap /* 90 */
|
||||
.long sys_munmap
|
||||
.long sys_truncate
|
||||
|
|
|
@ -107,7 +107,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_uselib
|
||||
.long sys_ni_syscall /* sys_swapon */
|
||||
.long sys_reboot
|
||||
.long old_readdir
|
||||
.long sys_old_readdir
|
||||
.long old_mmap /* 90 */
|
||||
.long sys_munmap
|
||||
.long sys_truncate
|
||||
|
|
|
@ -398,7 +398,7 @@ einval: li v0, -ENOSYS
|
|||
sys sys_uselib 1
|
||||
sys sys_swapon 2
|
||||
sys sys_reboot 3
|
||||
sys old_readdir 3
|
||||
sys sys_old_readdir 3
|
||||
sys old_mmap 6 /* 4090 */
|
||||
sys sys_munmap 2
|
||||
sys sys_truncate 2
|
||||
|
|
|
@ -478,7 +478,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_uselib
|
||||
.long sys_swapon
|
||||
.long sys_reboot
|
||||
.long old_readdir
|
||||
.long sys_old_readdir
|
||||
.long old_mmap /* 90 */
|
||||
.long sys_munmap
|
||||
.long sys_truncate
|
||||
|
|
|
@ -123,6 +123,7 @@ config PPC
|
|||
select HAVE_DMA_ATTRS if PPC64
|
||||
select USE_GENERIC_SMP_HELPERS if SMP
|
||||
select HAVE_OPROFILE
|
||||
select HAVE_SYSCALL_WRAPPERS if PPC64
|
||||
|
||||
config EARLY_PRINTK
|
||||
bool
|
||||
|
|
|
@ -92,7 +92,7 @@ COMPAT_SYS_SPU(readlink)
|
|||
SYSCALL(uselib)
|
||||
SYSCALL(swapon)
|
||||
SYSCALL(reboot)
|
||||
SYSX(sys_ni_syscall,compat_sys_old_readdir,old_readdir)
|
||||
SYSX(sys_ni_syscall,compat_sys_old_readdir,sys_old_readdir)
|
||||
SYSCALL_SPU(mmap)
|
||||
SYSCALL_SPU(munmap)
|
||||
SYSCALL_SPU(truncate)
|
||||
|
|
|
@ -77,6 +77,7 @@ mainmenu "Linux Kernel Configuration"
|
|||
config S390
|
||||
def_bool y
|
||||
select USE_GENERIC_SMP_HELPERS if SMP
|
||||
select HAVE_SYSCALL_WRAPPERS
|
||||
select HAVE_FUNCTION_TRACER
|
||||
select HAVE_OPROFILE
|
||||
select HAVE_KPROBES
|
||||
|
|
|
@ -547,7 +547,7 @@ sys32_setdomainname_wrapper:
|
|||
.globl sys32_newuname_wrapper
|
||||
sys32_newuname_wrapper:
|
||||
llgtr %r2,%r2 # struct new_utsname *
|
||||
jg s390x_newuname # branch to system call
|
||||
jg sys_s390_newuname # branch to system call
|
||||
|
||||
.globl compat_sys_adjtimex_wrapper
|
||||
compat_sys_adjtimex_wrapper:
|
||||
|
@ -615,7 +615,7 @@ sys32_sysfs_wrapper:
|
|||
.globl sys32_personality_wrapper
|
||||
sys32_personality_wrapper:
|
||||
llgfr %r2,%r2 # unsigned long
|
||||
jg s390x_personality # branch to system call
|
||||
jg sys_s390_personality # branch to system call
|
||||
|
||||
.globl sys32_setfsuid16_wrapper
|
||||
sys32_setfsuid16_wrapper:
|
||||
|
|
|
@ -30,23 +30,23 @@ struct fadvise64_64_args;
|
|||
struct old_sigaction;
|
||||
struct sel_arg_struct;
|
||||
|
||||
long sys_pipe(unsigned long __user *fildes);
|
||||
long sys_mmap2(struct mmap_arg_struct __user *arg);
|
||||
long old_mmap(struct mmap_arg_struct __user *arg);
|
||||
long sys_s390_old_mmap(struct mmap_arg_struct __user *arg);
|
||||
long sys_ipc(uint call, int first, unsigned long second,
|
||||
unsigned long third, void __user *ptr);
|
||||
long s390x_newuname(struct new_utsname __user *name);
|
||||
long s390x_personality(unsigned long personality);
|
||||
long s390_fadvise64(int fd, u32 offset_high, u32 offset_low,
|
||||
long sys_s390_newuname(struct new_utsname __user *name);
|
||||
long sys_s390_personality(unsigned long personality);
|
||||
long sys_s390_fadvise64(int fd, u32 offset_high, u32 offset_low,
|
||||
size_t len, int advice);
|
||||
long s390_fadvise64_64(struct fadvise64_64_args __user *args);
|
||||
long s390_fallocate(int fd, int mode, loff_t offset, u32 len_high, u32 len_low);
|
||||
long sys_s390_fadvise64_64(struct fadvise64_64_args __user *args);
|
||||
long sys_s390_fallocate(int fd, int mode, loff_t offset, u32 len_high,
|
||||
u32 len_low);
|
||||
long sys_fork(void);
|
||||
long sys_clone(void);
|
||||
long sys_vfork(void);
|
||||
void execve_tail(void);
|
||||
long sys_execve(void);
|
||||
int sys_sigsuspend(int history0, int history1, old_sigset_t mask);
|
||||
long sys_sigsuspend(int history0, int history1, old_sigset_t mask);
|
||||
long sys_sigaction(int sig, const struct old_sigaction __user *act,
|
||||
struct old_sigaction __user *oact);
|
||||
long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss);
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include <linux/tick.h>
|
||||
#include <linux/elfcore.h>
|
||||
#include <linux/kernel_stat.h>
|
||||
#include <linux/syscalls.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/system.h>
|
||||
|
@ -225,13 +226,13 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_fork(void)
|
||||
SYSCALL_DEFINE0(fork)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
return do_fork(SIGCHLD, regs->gprs[15], regs, 0, NULL, NULL);
|
||||
}
|
||||
|
||||
asmlinkage long sys_clone(void)
|
||||
SYSCALL_DEFINE0(clone)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
unsigned long clone_flags;
|
||||
|
@ -258,7 +259,7 @@ asmlinkage long sys_clone(void)
|
|||
* do not have enough call-clobbered registers to hold all
|
||||
* the information you need.
|
||||
*/
|
||||
asmlinkage long sys_vfork(void)
|
||||
SYSCALL_DEFINE0(vfork)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD,
|
||||
|
@ -278,7 +279,7 @@ asmlinkage void execve_tail(void)
|
|||
/*
|
||||
* sys_execve() executes a new program.
|
||||
*/
|
||||
asmlinkage long sys_execve(void)
|
||||
SYSCALL_DEFINE0(execve)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
char *filename;
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <linux/personality.h>
|
||||
#include <linux/binfmts.h>
|
||||
#include <linux/tracehook.h>
|
||||
#include <linux/syscalls.h>
|
||||
#include <asm/ucontext.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/lowcore.h>
|
||||
|
@ -53,8 +54,7 @@ typedef struct
|
|||
/*
|
||||
* Atomically swap in the new signal mask, and wait for a signal.
|
||||
*/
|
||||
asmlinkage int
|
||||
sys_sigsuspend(int history0, int history1, old_sigset_t mask)
|
||||
SYSCALL_DEFINE3(sigsuspend, int, history0, int, history1, old_sigset_t, mask)
|
||||
{
|
||||
mask &= _BLOCKABLE;
|
||||
spin_lock_irq(¤t->sighand->siglock);
|
||||
|
@ -70,9 +70,8 @@ sys_sigsuspend(int history0, int history1, old_sigset_t mask)
|
|||
return -ERESTARTNOHAND;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_sigaction(int sig, const struct old_sigaction __user *act,
|
||||
struct old_sigaction __user *oact)
|
||||
SYSCALL_DEFINE3(sigaction, int, sig, const struct old_sigaction __user *, act,
|
||||
struct old_sigaction __user *, oact)
|
||||
{
|
||||
struct k_sigaction new_ka, old_ka;
|
||||
int ret;
|
||||
|
@ -102,15 +101,13 @@ sys_sigaction(int sig, const struct old_sigaction __user *act,
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss)
|
||||
SYSCALL_DEFINE2(sigaltstack, const stack_t __user *, uss,
|
||||
stack_t __user *, uoss)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
return do_sigaltstack(uss, uoss, regs->gprs[15]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Returns non-zero on fault. */
|
||||
static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
|
||||
{
|
||||
|
@ -164,7 +161,7 @@ static int restore_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_sigreturn(void)
|
||||
SYSCALL_DEFINE0(sigreturn)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
sigframe __user *frame = (sigframe __user *)regs->gprs[15];
|
||||
|
@ -191,7 +188,7 @@ badframe:
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_rt_sigreturn(void)
|
||||
SYSCALL_DEFINE0(rt_sigreturn)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
rt_sigframe __user *frame = (rt_sigframe __user *)regs->gprs[15];
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include <linux/personality.h>
|
||||
#include <linux/unistd.h>
|
||||
#include <linux/ipc.h>
|
||||
#include <linux/syscalls.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include "entry.h"
|
||||
|
||||
|
@ -74,7 +75,7 @@ struct mmap_arg_struct {
|
|||
unsigned long offset;
|
||||
};
|
||||
|
||||
asmlinkage long sys_mmap2(struct mmap_arg_struct __user *arg)
|
||||
SYSCALL_DEFINE1(mmap2, struct mmap_arg_struct __user *, arg)
|
||||
{
|
||||
struct mmap_arg_struct a;
|
||||
int error = -EFAULT;
|
||||
|
@ -86,7 +87,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long old_mmap(struct mmap_arg_struct __user *arg)
|
||||
SYSCALL_DEFINE1(s390_old_mmap, struct mmap_arg_struct __user *, arg)
|
||||
{
|
||||
struct mmap_arg_struct a;
|
||||
long error = -EFAULT;
|
||||
|
@ -108,8 +109,8 @@ out:
|
|||
*
|
||||
* This is really horribly ugly.
|
||||
*/
|
||||
asmlinkage long sys_ipc(uint call, int first, unsigned long second,
|
||||
unsigned long third, void __user *ptr)
|
||||
SYSCALL_DEFINE5(ipc, uint, call, int, first, unsigned long, second,
|
||||
unsigned long, third, void __user *, ptr)
|
||||
{
|
||||
struct ipc_kludge tmp;
|
||||
int ret;
|
||||
|
@ -175,7 +176,7 @@ asmlinkage long sys_ipc(uint call, int first, unsigned long second,
|
|||
}
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
asmlinkage long s390x_newuname(struct new_utsname __user *name)
|
||||
SYSCALL_DEFINE1(s390_newuname, struct new_utsname __user *, name)
|
||||
{
|
||||
int ret = sys_newuname(name);
|
||||
|
||||
|
@ -186,7 +187,7 @@ asmlinkage long s390x_newuname(struct new_utsname __user *name)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long s390x_personality(unsigned long personality)
|
||||
SYSCALL_DEFINE1(s390_personality, unsigned long, personality)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
@ -205,15 +206,13 @@ asmlinkage long s390x_personality(unsigned long personality)
|
|||
*/
|
||||
#ifndef CONFIG_64BIT
|
||||
|
||||
asmlinkage long
|
||||
s390_fadvise64(int fd, u32 offset_high, u32 offset_low, size_t len, int advice)
|
||||
SYSCALL_DEFINE5(s390_fadvise64, int, fd, u32, offset_high, u32, offset_low,
|
||||
size_t, len, int, advice)
|
||||
{
|
||||
return sys_fadvise64(fd, (u64) offset_high << 32 | offset_low,
|
||||
len, advice);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
struct fadvise64_64_args {
|
||||
int fd;
|
||||
long long offset;
|
||||
|
@ -221,8 +220,7 @@ struct fadvise64_64_args {
|
|||
int advice;
|
||||
};
|
||||
|
||||
asmlinkage long
|
||||
s390_fadvise64_64(struct fadvise64_64_args __user *args)
|
||||
SYSCALL_DEFINE1(s390_fadvise64_64, struct fadvise64_64_args __user *, args)
|
||||
{
|
||||
struct fadvise64_64_args a;
|
||||
|
||||
|
@ -231,7 +229,6 @@ s390_fadvise64_64(struct fadvise64_64_args __user *args)
|
|||
return sys_fadvise64_64(a.fd, a.offset, a.len, a.advice);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_64BIT
|
||||
/*
|
||||
* This is a wrapper to call sys_fallocate(). For 31 bit s390 the last
|
||||
* 64 bit argument "len" is split into the upper and lower 32 bits. The
|
||||
|
@ -244,9 +241,19 @@ s390_fadvise64_64(struct fadvise64_64_args __user *args)
|
|||
* to
|
||||
* %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len
|
||||
*/
|
||||
asmlinkage long s390_fallocate(int fd, int mode, loff_t offset,
|
||||
SYSCALL_DEFINE(s390_fallocate)(int fd, int mode, loff_t offset,
|
||||
u32 len_high, u32 len_low)
|
||||
{
|
||||
return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low);
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_s390_fallocate(long fd, long mode, loff_t offset,
|
||||
long len_high, long len_low)
|
||||
{
|
||||
return SYSC_s390_fallocate((int) fd, (int) mode, offset,
|
||||
(u32) len_high, (u32) len_low);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_s390_fallocate, SyS_s390_fallocate);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -98,7 +98,7 @@ SYSCALL(sys_uselib,sys_uselib,sys32_uselib_wrapper)
|
|||
SYSCALL(sys_swapon,sys_swapon,sys32_swapon_wrapper)
|
||||
SYSCALL(sys_reboot,sys_reboot,sys32_reboot_wrapper)
|
||||
SYSCALL(sys_ni_syscall,sys_ni_syscall,old32_readdir_wrapper) /* old readdir syscall */
|
||||
SYSCALL(old_mmap,old_mmap,old32_mmap_wrapper) /* 90 */
|
||||
SYSCALL(sys_s390_old_mmap,sys_s390_old_mmap,old32_mmap_wrapper) /* 90 */
|
||||
SYSCALL(sys_munmap,sys_munmap,sys32_munmap_wrapper)
|
||||
SYSCALL(sys_truncate,sys_truncate,sys32_truncate_wrapper)
|
||||
SYSCALL(sys_ftruncate,sys_ftruncate,sys32_ftruncate_wrapper)
|
||||
|
@ -130,7 +130,7 @@ SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper)
|
|||
SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn)
|
||||
SYSCALL(sys_clone,sys_clone,sys32_clone) /* 120 */
|
||||
SYSCALL(sys_setdomainname,sys_setdomainname,sys32_setdomainname_wrapper)
|
||||
SYSCALL(sys_newuname,s390x_newuname,sys32_newuname_wrapper)
|
||||
SYSCALL(sys_newuname,sys_s390_newuname,sys32_newuname_wrapper)
|
||||
NI_SYSCALL /* modify_ldt for i386 */
|
||||
SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper)
|
||||
SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */
|
||||
|
@ -144,7 +144,7 @@ SYSCALL(sys_getpgid,sys_getpgid,sys32_getpgid_wrapper)
|
|||
SYSCALL(sys_fchdir,sys_fchdir,sys32_fchdir_wrapper)
|
||||
SYSCALL(sys_bdflush,sys_bdflush,sys32_bdflush_wrapper)
|
||||
SYSCALL(sys_sysfs,sys_sysfs,sys32_sysfs_wrapper) /* 135 */
|
||||
SYSCALL(sys_personality,s390x_personality,sys32_personality_wrapper)
|
||||
SYSCALL(sys_personality,sys_s390_personality,sys32_personality_wrapper)
|
||||
NI_SYSCALL /* for afs_syscall */
|
||||
SYSCALL(sys_setfsuid16,sys_ni_syscall,sys32_setfsuid16_wrapper) /* old setfsuid16 syscall */
|
||||
SYSCALL(sys_setfsgid16,sys_ni_syscall,sys32_setfsgid16_wrapper) /* old setfsgid16 syscall */
|
||||
|
@ -261,7 +261,7 @@ SYSCALL(sys_epoll_create,sys_epoll_create,sys_epoll_create_wrapper)
|
|||
SYSCALL(sys_epoll_ctl,sys_epoll_ctl,sys_epoll_ctl_wrapper) /* 250 */
|
||||
SYSCALL(sys_epoll_wait,sys_epoll_wait,sys_epoll_wait_wrapper)
|
||||
SYSCALL(sys_set_tid_address,sys_set_tid_address,sys32_set_tid_address_wrapper)
|
||||
SYSCALL(s390_fadvise64,sys_fadvise64_64,sys32_fadvise64_wrapper)
|
||||
SYSCALL(sys_s390_fadvise64,sys_fadvise64_64,sys32_fadvise64_wrapper)
|
||||
SYSCALL(sys_timer_create,sys_timer_create,sys32_timer_create_wrapper)
|
||||
SYSCALL(sys_timer_settime,sys_timer_settime,sys32_timer_settime_wrapper) /* 255 */
|
||||
SYSCALL(sys_timer_gettime,sys_timer_gettime,sys32_timer_gettime_wrapper)
|
||||
|
@ -272,7 +272,7 @@ SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper) /* 260
|
|||
SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
|
||||
SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper)
|
||||
NI_SYSCALL /* reserved for vserver */
|
||||
SYSCALL(s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
|
||||
SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
|
||||
SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
|
||||
SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
|
||||
SYSCALL(sys_remap_file_pages,sys_remap_file_pages,sys32_remap_file_pages_wrapper)
|
||||
|
@ -322,7 +322,7 @@ NI_SYSCALL /* 310 sys_move_pages */
|
|||
SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper)
|
||||
SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait_wrapper)
|
||||
SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes_wrapper)
|
||||
SYSCALL(s390_fallocate,sys_fallocate,sys_fallocate_wrapper)
|
||||
SYSCALL(sys_s390_fallocate,sys_fallocate,sys_fallocate_wrapper)
|
||||
SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat_wrapper) /* 315 */
|
||||
SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd_wrapper)
|
||||
NI_SYSCALL /* 317 old sys_timer_fd */
|
||||
|
|
|
@ -36,9 +36,9 @@ asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5,
|
|||
asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5,
|
||||
unsigned long r6, unsigned long r7,
|
||||
struct pt_regs __regs);
|
||||
asmlinkage int sys_pipe(unsigned long r4, unsigned long r5,
|
||||
unsigned long r6, unsigned long r7,
|
||||
struct pt_regs __regs);
|
||||
asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5,
|
||||
unsigned long r6, unsigned long r7,
|
||||
struct pt_regs __regs);
|
||||
asmlinkage ssize_t sys_pread_wrapper(unsigned int fd, char __user *buf,
|
||||
size_t count, long dummy, loff_t pos);
|
||||
asmlinkage ssize_t sys_pwrite_wrapper(unsigned int fd, const char __user *buf,
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
* sys_pipe() is the normal C calling standard for creating
|
||||
* a pipe. It's not the way Unix traditionally does this, though.
|
||||
*/
|
||||
asmlinkage int sys_pipe(unsigned long r4, unsigned long r5,
|
||||
asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5,
|
||||
unsigned long r6, unsigned long r7,
|
||||
struct pt_regs __regs)
|
||||
{
|
||||
|
|
|
@ -58,7 +58,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_mkdir
|
||||
.long sys_rmdir /* 40 */
|
||||
.long sys_dup
|
||||
.long sys_pipe
|
||||
.long sys_sh_pipe
|
||||
.long sys_times
|
||||
.long sys_ni_syscall /* old prof syscall holder */
|
||||
.long sys_brk /* 45 */
|
||||
|
@ -105,7 +105,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_uselib
|
||||
.long sys_swapon
|
||||
.long sys_reboot
|
||||
.long old_readdir
|
||||
.long sys_old_readdir
|
||||
.long old_mmap /* 90 */
|
||||
.long sys_munmap
|
||||
.long sys_truncate
|
||||
|
|
|
@ -109,7 +109,7 @@ sys_call_table:
|
|||
.long sys_uselib
|
||||
.long sys_swapon
|
||||
.long sys_reboot
|
||||
.long old_readdir
|
||||
.long sys_old_readdir
|
||||
.long old_mmap /* 90 */
|
||||
.long sys_munmap
|
||||
.long sys_truncate
|
||||
|
|
|
@ -1088,8 +1088,8 @@ sunos_execv:
|
|||
ld [%sp + STACKFRAME_SZ + PT_I0], %o0
|
||||
|
||||
.align 4
|
||||
.globl sys_pipe
|
||||
sys_pipe:
|
||||
.globl sys_sparc_pipe
|
||||
sys_sparc_pipe:
|
||||
mov %o7, %l5
|
||||
add %sp, STACKFRAME_SZ, %o0 ! pt_regs *regs arg
|
||||
call sparc_pipe
|
||||
|
|
|
@ -20,7 +20,7 @@ execve_merge:
|
|||
add %sp, PTREGS_OFF, %o0
|
||||
|
||||
.align 32
|
||||
sys_pipe:
|
||||
sys_sparc_pipe:
|
||||
ba,pt %xcc, sparc_pipe
|
||||
add %sp, PTREGS_OFF, %o0
|
||||
sys_nis_syscall:
|
||||
|
|
|
@ -24,7 +24,7 @@ sys_call_table:
|
|||
/*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
|
||||
/*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
|
||||
/*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile
|
||||
/*40*/ .long sys_newlstat, sys_dup, sys_pipe, sys_times, sys_getuid
|
||||
/*40*/ .long sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_getuid
|
||||
/*45*/ .long sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16
|
||||
/*50*/ .long sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, sys_ioctl
|
||||
/*55*/ .long sys_reboot, sys_mmap2, sys_symlink, sys_readlink, sys_execve
|
||||
|
@ -56,7 +56,7 @@ sys_call_table:
|
|||
/*185*/ .long sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_newuname
|
||||
/*190*/ .long sys_init_module, sys_personality, sparc_remap_file_pages, sys_epoll_create, sys_epoll_ctl
|
||||
/*195*/ .long sys_epoll_wait, sys_ioprio_set, sys_getppid, sparc_sigaction, sys_sgetmask
|
||||
/*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, old_readdir
|
||||
/*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, sys_old_readdir
|
||||
/*205*/ .long sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64
|
||||
/*210*/ .long sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo
|
||||
/*215*/ .long sys_ipc, sys_sigreturn, sys_clone, sys_ioprio_get, sys_adjtimex
|
||||
|
|
|
@ -26,7 +26,7 @@ sys_call_table32:
|
|||
/*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause
|
||||
/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice
|
||||
.word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile
|
||||
/*40*/ .word compat_sys_newlstat, sys_dup, sys_pipe, compat_sys_times, sys_getuid
|
||||
/*40*/ .word compat_sys_newlstat, sys_dup, sys_sparc_pipe, compat_sys_times, sys_getuid
|
||||
.word sys32_umount, sys_setgid16, sys_getgid16, sys32_signal, sys_geteuid16
|
||||
/*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl
|
||||
.word sys32_reboot, sys32_mmap2, sys_symlink, sys32_readlink, sys32_execve
|
||||
|
@ -100,7 +100,7 @@ sys_call_table:
|
|||
/*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall
|
||||
/*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice
|
||||
.word sys_nis_syscall, sys_sync, sys_kill, sys_newstat, sys_sendfile64
|
||||
/*40*/ .word sys_newlstat, sys_dup, sys_pipe, sys_times, sys_nis_syscall
|
||||
/*40*/ .word sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_nis_syscall
|
||||
.word sys_umount, sys_setgid, sys_getgid, sys_signal, sys_geteuid
|
||||
/*50*/ .word sys_getegid, sys_acct, sys_memory_ordering, sys_nis_syscall, sys_ioctl
|
||||
.word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve
|
||||
|
|
|
@ -88,7 +88,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_uselib
|
||||
.long sys_swapon
|
||||
.long sys_reboot
|
||||
.long old_readdir
|
||||
.long sys_old_readdir
|
||||
.long old_mmap /* 90 */
|
||||
.long sys_munmap
|
||||
.long sys_truncate
|
||||
|
|
|
@ -14,10 +14,8 @@
|
|||
#include <asm/uaccess.h>
|
||||
#include "pci.h"
|
||||
|
||||
asmlinkage long
|
||||
sys_pciconfig_read(unsigned long bus, unsigned long dfn,
|
||||
unsigned long off, unsigned long len,
|
||||
void __user *buf)
|
||||
SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn,
|
||||
unsigned long, off, unsigned long, len, void __user *, buf)
|
||||
{
|
||||
struct pci_dev *dev;
|
||||
u8 byte;
|
||||
|
@ -86,10 +84,8 @@ error:
|
|||
return err;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_pciconfig_write(unsigned long bus, unsigned long dfn,
|
||||
unsigned long off, unsigned long len,
|
||||
void __user *buf)
|
||||
SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn,
|
||||
unsigned long, off, unsigned long, len, void __user *, buf)
|
||||
{
|
||||
struct pci_dev *dev;
|
||||
u8 byte;
|
||||
|
|
22
fs/aio.c
22
fs/aio.c
|
@ -1270,7 +1270,7 @@ static void io_destroy(struct kioctx *ioctx)
|
|||
* pointer is passed for ctxp. Will fail with -ENOSYS if not
|
||||
* implemented.
|
||||
*/
|
||||
asmlinkage long sys_io_setup(unsigned nr_events, aio_context_t __user *ctxp)
|
||||
SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp)
|
||||
{
|
||||
struct kioctx *ioctx = NULL;
|
||||
unsigned long ctx;
|
||||
|
@ -1308,7 +1308,7 @@ out:
|
|||
* implemented. May fail with -EFAULT if the context pointed to
|
||||
* is invalid.
|
||||
*/
|
||||
asmlinkage long sys_io_destroy(aio_context_t ctx)
|
||||
SYSCALL_DEFINE1(io_destroy, aio_context_t, ctx)
|
||||
{
|
||||
struct kioctx *ioctx = lookup_ioctx(ctx);
|
||||
if (likely(NULL != ioctx)) {
|
||||
|
@ -1662,8 +1662,8 @@ out_put_req:
|
|||
* are available to queue any iocbs. Will return 0 if nr is 0. Will
|
||||
* fail with -ENOSYS if not implemented.
|
||||
*/
|
||||
asmlinkage long sys_io_submit(aio_context_t ctx_id, long nr,
|
||||
struct iocb __user * __user *iocbpp)
|
||||
SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr,
|
||||
struct iocb __user * __user *, iocbpp)
|
||||
{
|
||||
struct kioctx *ctx;
|
||||
long ret = 0;
|
||||
|
@ -1737,8 +1737,8 @@ static struct kiocb *lookup_kiocb(struct kioctx *ctx, struct iocb __user *iocb,
|
|||
* invalid. May fail with -EAGAIN if the iocb specified was not
|
||||
* cancelled. Will fail with -ENOSYS if not implemented.
|
||||
*/
|
||||
asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
|
||||
struct io_event __user *result)
|
||||
SYSCALL_DEFINE3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb,
|
||||
struct io_event __user *, result)
|
||||
{
|
||||
int (*cancel)(struct kiocb *iocb, struct io_event *res);
|
||||
struct kioctx *ctx;
|
||||
|
@ -1799,11 +1799,11 @@ asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
|
|||
* will be updated if not NULL and the operation blocks. Will fail
|
||||
* with -ENOSYS if not implemented.
|
||||
*/
|
||||
asmlinkage long sys_io_getevents(aio_context_t ctx_id,
|
||||
long min_nr,
|
||||
long nr,
|
||||
struct io_event __user *events,
|
||||
struct timespec __user *timeout)
|
||||
SYSCALL_DEFINE5(io_getevents, aio_context_t, ctx_id,
|
||||
long, min_nr,
|
||||
long, nr,
|
||||
struct io_event __user *, events,
|
||||
struct timespec __user *, timeout)
|
||||
{
|
||||
struct kioctx *ioctx = lookup_ioctx(ctx_id);
|
||||
long ret = -EINVAL;
|
||||
|
|
|
@ -3243,7 +3243,7 @@ void block_sync_page(struct page *page)
|
|||
* Use of bdflush() is deprecated and will be removed in a future kernel.
|
||||
* The `pdflush' kernel threads fully replace bdflush daemons and this call.
|
||||
*/
|
||||
asmlinkage long sys_bdflush(int func, long data)
|
||||
SYSCALL_DEFINE2(bdflush, int, func, long, data)
|
||||
{
|
||||
static int msg_count;
|
||||
|
||||
|
|
|
@ -1709,7 +1709,7 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp,
|
|||
}
|
||||
|
||||
#ifdef HAVE_SET_RESTORE_SIGMASK
|
||||
asmlinkage long compat_sys_pselect7(int n, compat_ulong_t __user *inp,
|
||||
static long do_compat_pselect(int n, compat_ulong_t __user *inp,
|
||||
compat_ulong_t __user *outp, compat_ulong_t __user *exp,
|
||||
struct compat_timespec __user *tsp, compat_sigset_t __user *sigmask,
|
||||
compat_size_t sigsetsize)
|
||||
|
@ -1775,8 +1775,8 @@ asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp,
|
|||
(compat_size_t __user *)(sig+sizeof(up))))
|
||||
return -EFAULT;
|
||||
}
|
||||
return compat_sys_pselect7(n, inp, outp, exp, tsp, compat_ptr(up),
|
||||
sigsetsize);
|
||||
return do_compat_pselect(n, inp, outp, exp, tsp, compat_ptr(up),
|
||||
sigsetsize);
|
||||
}
|
||||
|
||||
asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
|
||||
|
|
|
@ -2092,7 +2092,7 @@ Elong:
|
|||
* return NULL;
|
||||
* }
|
||||
*/
|
||||
asmlinkage long sys_getcwd(char __user *buf, unsigned long size)
|
||||
SYSCALL_DEFINE2(getcwd, char __user *, buf, unsigned long, size)
|
||||
{
|
||||
int error;
|
||||
struct path pwd, root;
|
||||
|
|
|
@ -145,7 +145,7 @@ out:
|
|||
/* And here is where the userspace process can look up the cookie value
|
||||
* to retrieve the path.
|
||||
*/
|
||||
asmlinkage long sys_lookup_dcookie(u64 cookie64, char __user * buf, size_t len)
|
||||
SYSCALL_DEFINE(lookup_dcookie)(u64 cookie64, char __user * buf, size_t len)
|
||||
{
|
||||
unsigned long cookie = (unsigned long)cookie64;
|
||||
int err = -EINVAL;
|
||||
|
@ -198,7 +198,13 @@ out:
|
|||
mutex_unlock(&dcookie_mutex);
|
||||
return err;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_lookup_dcookie(u64 cookie64, long buf, long len)
|
||||
{
|
||||
return SYSC_lookup_dcookie(cookie64, (char __user *) buf, (size_t) len);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_lookup_dcookie, SyS_lookup_dcookie);
|
||||
#endif
|
||||
|
||||
static int dcookie_init(void)
|
||||
{
|
||||
|
|
|
@ -198,7 +198,7 @@ struct file *eventfd_fget(int fd)
|
|||
return file;
|
||||
}
|
||||
|
||||
asmlinkage long sys_eventfd2(unsigned int count, int flags)
|
||||
SYSCALL_DEFINE2(eventfd2, unsigned int, count, int, flags)
|
||||
{
|
||||
int fd;
|
||||
struct eventfd_ctx *ctx;
|
||||
|
@ -228,8 +228,7 @@ asmlinkage long sys_eventfd2(unsigned int count, int flags)
|
|||
return fd;
|
||||
}
|
||||
|
||||
asmlinkage long sys_eventfd(unsigned int count)
|
||||
SYSCALL_DEFINE1(eventfd, unsigned int, count)
|
||||
{
|
||||
return sys_eventfd2(count, 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -1110,7 +1110,7 @@ retry:
|
|||
/*
|
||||
* Open an eventpoll file descriptor.
|
||||
*/
|
||||
asmlinkage long sys_epoll_create1(int flags)
|
||||
SYSCALL_DEFINE1(epoll_create1, int, flags)
|
||||
{
|
||||
int error, fd = -1;
|
||||
struct eventpoll *ep;
|
||||
|
@ -1150,7 +1150,7 @@ error_return:
|
|||
return fd;
|
||||
}
|
||||
|
||||
asmlinkage long sys_epoll_create(int size)
|
||||
SYSCALL_DEFINE1(epoll_create, int, size)
|
||||
{
|
||||
if (size < 0)
|
||||
return -EINVAL;
|
||||
|
@ -1163,8 +1163,8 @@ asmlinkage long sys_epoll_create(int size)
|
|||
* the eventpoll file that enables the insertion/removal/change of
|
||||
* file descriptors inside the interest set.
|
||||
*/
|
||||
asmlinkage long sys_epoll_ctl(int epfd, int op, int fd,
|
||||
struct epoll_event __user *event)
|
||||
SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
|
||||
struct epoll_event __user *, event)
|
||||
{
|
||||
int error;
|
||||
struct file *file, *tfile;
|
||||
|
@ -1261,8 +1261,8 @@ error_return:
|
|||
* Implement the event wait interface for the eventpoll file. It is the kernel
|
||||
* part of the user space epoll_wait(2).
|
||||
*/
|
||||
asmlinkage long sys_epoll_wait(int epfd, struct epoll_event __user *events,
|
||||
int maxevents, int timeout)
|
||||
SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events,
|
||||
int, maxevents, int, timeout)
|
||||
{
|
||||
int error;
|
||||
struct file *file;
|
||||
|
@ -1319,9 +1319,9 @@ error_return:
|
|||
* Implement the event wait interface for the eventpoll file. It is the kernel
|
||||
* part of the user space epoll_pwait(2).
|
||||
*/
|
||||
asmlinkage long sys_epoll_pwait(int epfd, struct epoll_event __user *events,
|
||||
int maxevents, int timeout, const sigset_t __user *sigmask,
|
||||
size_t sigsetsize)
|
||||
SYSCALL_DEFINE6(epoll_pwait, int, epfd, struct epoll_event __user *, events,
|
||||
int, maxevents, int, timeout, const sigset_t __user *, sigmask,
|
||||
size_t, sigsetsize)
|
||||
{
|
||||
int error;
|
||||
sigset_t ksigmask, sigsaved;
|
||||
|
|
|
@ -99,7 +99,7 @@ static inline void put_binfmt(struct linux_binfmt * fmt)
|
|||
*
|
||||
* Also note that we take the address to load from from the file itself.
|
||||
*/
|
||||
asmlinkage long sys_uselib(const char __user * library)
|
||||
SYSCALL_DEFINE1(uselib, const char __user *, library)
|
||||
{
|
||||
struct file *file;
|
||||
struct nameidata nd;
|
||||
|
|
11
fs/fcntl.c
11
fs/fcntl.c
|
@ -50,7 +50,7 @@ static int get_close_on_exec(unsigned int fd)
|
|||
return res;
|
||||
}
|
||||
|
||||
asmlinkage long sys_dup3(unsigned int oldfd, unsigned int newfd, int flags)
|
||||
SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
|
||||
{
|
||||
int err = -EBADF;
|
||||
struct file * file, *tofree;
|
||||
|
@ -113,7 +113,7 @@ out_unlock:
|
|||
return err;
|
||||
}
|
||||
|
||||
asmlinkage long sys_dup2(unsigned int oldfd, unsigned int newfd)
|
||||
SYSCALL_DEFINE2(dup2, unsigned int, oldfd, unsigned int, newfd)
|
||||
{
|
||||
if (unlikely(newfd == oldfd)) { /* corner case */
|
||||
struct files_struct *files = current->files;
|
||||
|
@ -126,7 +126,7 @@ asmlinkage long sys_dup2(unsigned int oldfd, unsigned int newfd)
|
|||
return sys_dup3(oldfd, newfd, 0);
|
||||
}
|
||||
|
||||
asmlinkage long sys_dup(unsigned int fildes)
|
||||
SYSCALL_DEFINE1(dup, unsigned int, fildes)
|
||||
{
|
||||
int ret = -EBADF;
|
||||
struct file *file = fget(fildes);
|
||||
|
@ -335,7 +335,7 @@ static long do_fcntl(int fd, unsigned int cmd, unsigned long arg,
|
|||
return err;
|
||||
}
|
||||
|
||||
asmlinkage long sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
SYSCALL_DEFINE3(fcntl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
|
||||
{
|
||||
struct file *filp;
|
||||
long err = -EBADF;
|
||||
|
@ -358,7 +358,8 @@ out:
|
|||
}
|
||||
|
||||
#if BITS_PER_LONG == 32
|
||||
asmlinkage long sys_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd,
|
||||
unsigned long, arg)
|
||||
{
|
||||
struct file * filp;
|
||||
long err;
|
||||
|
|
|
@ -179,7 +179,7 @@ static int fs_maxindex(void)
|
|||
/*
|
||||
* Whee.. Weird sysv syscall.
|
||||
*/
|
||||
asmlinkage long sys_sysfs(int option, unsigned long arg1, unsigned long arg2)
|
||||
SYSCALL_DEFINE3(sysfs, int, option, unsigned long, arg1, unsigned long, arg2)
|
||||
{
|
||||
int retval = -EINVAL;
|
||||
|
||||
|
|
|
@ -542,7 +542,7 @@ int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
|
||||
{
|
||||
struct file *filp;
|
||||
int error = -EBADF;
|
||||
|
|
|
@ -72,7 +72,7 @@ int set_task_ioprio(struct task_struct *task, int ioprio)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(set_task_ioprio);
|
||||
|
||||
asmlinkage long sys_ioprio_set(int which, int who, int ioprio)
|
||||
SYSCALL_DEFINE3(ioprio_set, int, which, int, who, int, ioprio)
|
||||
{
|
||||
int class = IOPRIO_PRIO_CLASS(ioprio);
|
||||
int data = IOPRIO_PRIO_DATA(ioprio);
|
||||
|
@ -188,7 +188,7 @@ int ioprio_best(unsigned short aprio, unsigned short bprio)
|
|||
return aprio;
|
||||
}
|
||||
|
||||
asmlinkage long sys_ioprio_get(int which, int who)
|
||||
SYSCALL_DEFINE2(ioprio_get, int, which, int, who)
|
||||
{
|
||||
struct task_struct *g, *p;
|
||||
struct user_struct *user;
|
||||
|
@ -252,4 +252,3 @@ asmlinkage long sys_ioprio_get(int which, int who)
|
|||
read_unlock(&tasklist_lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -1564,7 +1564,7 @@ EXPORT_SYMBOL(flock_lock_file_wait);
|
|||
* %LOCK_MAND can be combined with %LOCK_READ or %LOCK_WRITE to allow other
|
||||
* processes read and write access respectively.
|
||||
*/
|
||||
asmlinkage long sys_flock(unsigned int fd, unsigned int cmd)
|
||||
SYSCALL_DEFINE2(flock, unsigned int, fd, unsigned int, cmd)
|
||||
{
|
||||
struct file *filp;
|
||||
struct file_lock *lock;
|
||||
|
|
35
fs/namei.c
35
fs/namei.c
|
@ -1962,8 +1962,8 @@ static int may_mknod(mode_t mode)
|
|||
}
|
||||
}
|
||||
|
||||
asmlinkage long sys_mknodat(int dfd, const char __user *filename, int mode,
|
||||
unsigned dev)
|
||||
SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, int, mode,
|
||||
unsigned, dev)
|
||||
{
|
||||
int error;
|
||||
char *tmp;
|
||||
|
@ -2017,7 +2017,7 @@ out_unlock:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_mknod(const char __user *filename, int mode, unsigned dev)
|
||||
SYSCALL_DEFINE3(mknod, const char __user *, filename, int, mode, unsigned, dev)
|
||||
{
|
||||
return sys_mknodat(AT_FDCWD, filename, mode, dev);
|
||||
}
|
||||
|
@ -2044,7 +2044,7 @@ int vfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_mkdirat(int dfd, const char __user *pathname, int mode)
|
||||
SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, int, mode)
|
||||
{
|
||||
int error = 0;
|
||||
char * tmp;
|
||||
|
@ -2081,7 +2081,7 @@ out_err:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_mkdir(const char __user *pathname, int mode)
|
||||
SYSCALL_DEFINE2(mkdir, const char __user *, pathname, int, mode)
|
||||
{
|
||||
return sys_mkdirat(AT_FDCWD, pathname, mode);
|
||||
}
|
||||
|
@ -2195,7 +2195,7 @@ exit1:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_rmdir(const char __user *pathname)
|
||||
SYSCALL_DEFINE1(rmdir, const char __user *, pathname)
|
||||
{
|
||||
return do_rmdir(AT_FDCWD, pathname);
|
||||
}
|
||||
|
@ -2291,7 +2291,7 @@ slashes:
|
|||
goto exit2;
|
||||
}
|
||||
|
||||
asmlinkage long sys_unlinkat(int dfd, const char __user *pathname, int flag)
|
||||
SYSCALL_DEFINE3(unlinkat, int, dfd, const char __user *, pathname, int, flag)
|
||||
{
|
||||
if ((flag & ~AT_REMOVEDIR) != 0)
|
||||
return -EINVAL;
|
||||
|
@ -2302,7 +2302,7 @@ asmlinkage long sys_unlinkat(int dfd, const char __user *pathname, int flag)
|
|||
return do_unlinkat(dfd, pathname);
|
||||
}
|
||||
|
||||
asmlinkage long sys_unlink(const char __user *pathname)
|
||||
SYSCALL_DEFINE1(unlink, const char __user *, pathname)
|
||||
{
|
||||
return do_unlinkat(AT_FDCWD, pathname);
|
||||
}
|
||||
|
@ -2328,8 +2328,8 @@ int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_symlinkat(const char __user *oldname,
|
||||
int newdfd, const char __user *newname)
|
||||
SYSCALL_DEFINE3(symlinkat, const char __user *, oldname,
|
||||
int, newdfd, const char __user *, newname)
|
||||
{
|
||||
int error;
|
||||
char *from;
|
||||
|
@ -2370,7 +2370,7 @@ out_putname:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_symlink(const char __user *oldname, const char __user *newname)
|
||||
SYSCALL_DEFINE2(symlink, const char __user *, oldname, const char __user *, newname)
|
||||
{
|
||||
return sys_symlinkat(oldname, AT_FDCWD, newname);
|
||||
}
|
||||
|
@ -2422,9 +2422,8 @@ int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_de
|
|||
* with linux 2.0, and to avoid hard-linking to directories
|
||||
* and other special files. --ADM
|
||||
*/
|
||||
asmlinkage long sys_linkat(int olddfd, const char __user *oldname,
|
||||
int newdfd, const char __user *newname,
|
||||
int flags)
|
||||
SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
|
||||
int, newdfd, const char __user *, newname, int, flags)
|
||||
{
|
||||
struct dentry *new_dentry;
|
||||
struct nameidata nd;
|
||||
|
@ -2473,7 +2472,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_link(const char __user *oldname, const char __user *newname)
|
||||
SYSCALL_DEFINE2(link, const char __user *, oldname, const char __user *, newname)
|
||||
{
|
||||
return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
|
||||
}
|
||||
|
@ -2624,8 +2623,8 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_renameat(int olddfd, const char __user *oldname,
|
||||
int newdfd, const char __user *newname)
|
||||
SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
|
||||
int, newdfd, const char __user *, newname)
|
||||
{
|
||||
struct dentry *old_dir, *new_dir;
|
||||
struct dentry *old_dentry, *new_dentry;
|
||||
|
@ -2718,7 +2717,7 @@ exit:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_rename(const char __user *oldname, const char __user *newname)
|
||||
SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newname)
|
||||
{
|
||||
return sys_renameat(AT_FDCWD, oldname, AT_FDCWD, newname);
|
||||
}
|
||||
|
|
|
@ -1128,7 +1128,7 @@ static int do_umount(struct vfsmount *mnt, int flags)
|
|||
* unixes. Our API is identical to OSF/1 to avoid making a mess of AMD
|
||||
*/
|
||||
|
||||
asmlinkage long sys_umount(char __user * name, int flags)
|
||||
SYSCALL_DEFINE2(umount, char __user *, name, int, flags)
|
||||
{
|
||||
struct path path;
|
||||
int retval;
|
||||
|
@ -1160,7 +1160,7 @@ out:
|
|||
/*
|
||||
* The 2.0 compatible umount. No flags.
|
||||
*/
|
||||
asmlinkage long sys_oldumount(char __user * name)
|
||||
SYSCALL_DEFINE1(oldumount, char __user *, name)
|
||||
{
|
||||
return sys_umount(name, 0);
|
||||
}
|
||||
|
@ -2045,9 +2045,8 @@ struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns,
|
|||
return new_ns;
|
||||
}
|
||||
|
||||
asmlinkage long sys_mount(char __user * dev_name, char __user * dir_name,
|
||||
char __user * type, unsigned long flags,
|
||||
void __user * data)
|
||||
SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,
|
||||
char __user *, type, unsigned long, flags, void __user *, data)
|
||||
{
|
||||
int retval;
|
||||
unsigned long data_page;
|
||||
|
@ -2172,8 +2171,8 @@ static void chroot_fs_refs(struct path *old_root, struct path *new_root)
|
|||
* though, so you may need to say mount --bind /nfs/my_root /nfs/my_root
|
||||
* first.
|
||||
*/
|
||||
asmlinkage long sys_pivot_root(const char __user * new_root,
|
||||
const char __user * put_old)
|
||||
SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
|
||||
const char __user *, put_old)
|
||||
{
|
||||
struct vfsmount *tmp;
|
||||
struct path new, old, parent_path, root_parent, root;
|
||||
|
|
|
@ -86,8 +86,8 @@ static struct {
|
|||
},
|
||||
};
|
||||
|
||||
long
|
||||
asmlinkage sys_nfsservctl(int cmd, struct nfsctl_arg __user *arg, void __user *res)
|
||||
SYSCALL_DEFINE3(nfsservctl, int, cmd, struct nfsctl_arg __user *, arg,
|
||||
void __user *, res)
|
||||
{
|
||||
struct file *file;
|
||||
void __user *p = &arg->u;
|
||||
|
|
|
@ -576,7 +576,7 @@ static const struct inotify_operations inotify_user_ops = {
|
|||
.destroy_watch = free_inotify_user_watch,
|
||||
};
|
||||
|
||||
asmlinkage long sys_inotify_init1(int flags)
|
||||
SYSCALL_DEFINE1(inotify_init1, int, flags)
|
||||
{
|
||||
struct inotify_device *dev;
|
||||
struct inotify_handle *ih;
|
||||
|
@ -655,12 +655,13 @@ out_put_fd:
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_inotify_init(void)
|
||||
SYSCALL_DEFINE0(inotify_init)
|
||||
{
|
||||
return sys_inotify_init1(0);
|
||||
}
|
||||
|
||||
asmlinkage long sys_inotify_add_watch(int fd, const char __user *pathname, u32 mask)
|
||||
SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname,
|
||||
u32, mask)
|
||||
{
|
||||
struct inode *inode;
|
||||
struct inotify_device *dev;
|
||||
|
@ -704,7 +705,7 @@ fput_and_out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_inotify_rm_watch(int fd, __s32 wd)
|
||||
SYSCALL_DEFINE2(inotify_rm_watch, int, fd, __s32, wd)
|
||||
{
|
||||
struct file *filp;
|
||||
struct inotify_device *dev;
|
||||
|
|
82
fs/open.c
82
fs/open.c
|
@ -122,7 +122,7 @@ static int vfs_statfs64(struct dentry *dentry, struct statfs64 *buf)
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_statfs(const char __user *pathname, struct statfs __user * buf)
|
||||
SYSCALL_DEFINE2(statfs, const char __user *, pathname, struct statfs __user *, buf)
|
||||
{
|
||||
struct path path;
|
||||
int error;
|
||||
|
@ -138,8 +138,7 @@ asmlinkage long sys_statfs(const char __user *pathname, struct statfs __user * b
|
|||
return error;
|
||||
}
|
||||
|
||||
|
||||
asmlinkage long sys_statfs64(const char __user *pathname, size_t sz, struct statfs64 __user *buf)
|
||||
SYSCALL_DEFINE3(statfs64, const char __user *, pathname, size_t, sz, struct statfs64 __user *, buf)
|
||||
{
|
||||
struct path path;
|
||||
long error;
|
||||
|
@ -157,8 +156,7 @@ asmlinkage long sys_statfs64(const char __user *pathname, size_t sz, struct stat
|
|||
return error;
|
||||
}
|
||||
|
||||
|
||||
asmlinkage long sys_fstatfs(unsigned int fd, struct statfs __user * buf)
|
||||
SYSCALL_DEFINE2(fstatfs, unsigned int, fd, struct statfs __user *, buf)
|
||||
{
|
||||
struct file * file;
|
||||
struct statfs tmp;
|
||||
|
@ -176,7 +174,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_fstatfs64(unsigned int fd, size_t sz, struct statfs64 __user *buf)
|
||||
SYSCALL_DEFINE3(fstatfs64, unsigned int, fd, size_t, sz, struct statfs64 __user *, buf)
|
||||
{
|
||||
struct file * file;
|
||||
struct statfs64 tmp;
|
||||
|
@ -289,7 +287,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_truncate(const char __user * path, unsigned long length)
|
||||
SYSCALL_DEFINE2(truncate, const char __user *, path, unsigned long, length)
|
||||
{
|
||||
/* on 32-bit boxen it will cut the range 2^31--2^32-1 off */
|
||||
return do_sys_truncate(path, (long)length);
|
||||
|
@ -341,7 +339,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length)
|
||||
SYSCALL_DEFINE2(ftruncate, unsigned int, fd, unsigned long, length)
|
||||
{
|
||||
long ret = do_sys_ftruncate(fd, length, 1);
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
|
@ -351,21 +349,35 @@ asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length)
|
|||
|
||||
/* LFS versions of truncate are only needed on 32 bit machines */
|
||||
#if BITS_PER_LONG == 32
|
||||
asmlinkage long sys_truncate64(const char __user * path, loff_t length)
|
||||
SYSCALL_DEFINE(truncate64)(const char __user * path, loff_t length)
|
||||
{
|
||||
return do_sys_truncate(path, length);
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_truncate64(long path, loff_t length)
|
||||
{
|
||||
return SYSC_truncate64((const char __user *) path, length);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_truncate64, SyS_truncate64);
|
||||
#endif
|
||||
|
||||
asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length)
|
||||
SYSCALL_DEFINE(ftruncate64)(unsigned int fd, loff_t length)
|
||||
{
|
||||
long ret = do_sys_ftruncate(fd, length, 0);
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
asmlinkage_protect(2, ret, fd, length);
|
||||
return ret;
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_ftruncate64(long fd, loff_t length)
|
||||
{
|
||||
return SYSC_ftruncate64((unsigned int) fd, length);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_ftruncate64, SyS_ftruncate64);
|
||||
#endif
|
||||
#endif /* BITS_PER_LONG == 32 */
|
||||
|
||||
asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len)
|
||||
SYSCALL_DEFINE(fallocate)(int fd, int mode, loff_t offset, loff_t len)
|
||||
{
|
||||
struct file *file;
|
||||
struct inode *inode;
|
||||
|
@ -422,13 +434,20 @@ out_fput:
|
|||
out:
|
||||
return ret;
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_fallocate(long fd, long mode, loff_t offset, loff_t len)
|
||||
{
|
||||
return SYSC_fallocate((int)fd, (int)mode, offset, len);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_fallocate, SyS_fallocate);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* access() needs to use the real uid/gid, not the effective uid/gid.
|
||||
* We do this by temporarily clearing all FS-related capabilities and
|
||||
* switching the fsuid/fsgid around to the real ones.
|
||||
*/
|
||||
asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode)
|
||||
SYSCALL_DEFINE3(faccessat, int, dfd, const char __user *, filename, int, mode)
|
||||
{
|
||||
const struct cred *old_cred;
|
||||
struct cred *override_cred;
|
||||
|
@ -498,12 +517,12 @@ out:
|
|||
return res;
|
||||
}
|
||||
|
||||
asmlinkage long sys_access(const char __user *filename, int mode)
|
||||
SYSCALL_DEFINE2(access, const char __user *, filename, int, mode)
|
||||
{
|
||||
return sys_faccessat(AT_FDCWD, filename, mode);
|
||||
}
|
||||
|
||||
asmlinkage long sys_chdir(const char __user * filename)
|
||||
SYSCALL_DEFINE1(chdir, const char __user *, filename)
|
||||
{
|
||||
struct path path;
|
||||
int error;
|
||||
|
@ -524,7 +543,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_fchdir(unsigned int fd)
|
||||
SYSCALL_DEFINE1(fchdir, unsigned int, fd)
|
||||
{
|
||||
struct file *file;
|
||||
struct inode *inode;
|
||||
|
@ -550,7 +569,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_chroot(const char __user * filename)
|
||||
SYSCALL_DEFINE1(chroot, const char __user *, filename)
|
||||
{
|
||||
struct path path;
|
||||
int error;
|
||||
|
@ -575,7 +594,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_fchmod(unsigned int fd, mode_t mode)
|
||||
SYSCALL_DEFINE2(fchmod, unsigned int, fd, mode_t, mode)
|
||||
{
|
||||
struct inode * inode;
|
||||
struct dentry * dentry;
|
||||
|
@ -609,8 +628,7 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
asmlinkage long sys_fchmodat(int dfd, const char __user *filename,
|
||||
mode_t mode)
|
||||
SYSCALL_DEFINE3(fchmodat, int, dfd, const char __user *, filename, mode_t, mode)
|
||||
{
|
||||
struct path path;
|
||||
struct inode *inode;
|
||||
|
@ -639,7 +657,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_chmod(const char __user *filename, mode_t mode)
|
||||
SYSCALL_DEFINE2(chmod, const char __user *, filename, mode_t, mode)
|
||||
{
|
||||
return sys_fchmodat(AT_FDCWD, filename, mode);
|
||||
}
|
||||
|
@ -669,7 +687,7 @@ static int chown_common(struct dentry * dentry, uid_t user, gid_t group)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_chown(const char __user * filename, uid_t user, gid_t group)
|
||||
SYSCALL_DEFINE3(chown, const char __user *, filename, uid_t, user, gid_t, group)
|
||||
{
|
||||
struct path path;
|
||||
int error;
|
||||
|
@ -688,8 +706,8 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_fchownat(int dfd, const char __user *filename, uid_t user,
|
||||
gid_t group, int flag)
|
||||
SYSCALL_DEFINE5(fchownat, int, dfd, const char __user *, filename, uid_t, user,
|
||||
gid_t, group, int, flag)
|
||||
{
|
||||
struct path path;
|
||||
int error = -EINVAL;
|
||||
|
@ -713,7 +731,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_lchown(const char __user * filename, uid_t user, gid_t group)
|
||||
SYSCALL_DEFINE3(lchown, const char __user *, filename, uid_t, user, gid_t, group)
|
||||
{
|
||||
struct path path;
|
||||
int error;
|
||||
|
@ -732,8 +750,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
|
||||
asmlinkage long sys_fchown(unsigned int fd, uid_t user, gid_t group)
|
||||
SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group)
|
||||
{
|
||||
struct file * file;
|
||||
int error = -EBADF;
|
||||
|
@ -1029,7 +1046,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, int mode)
|
|||
return fd;
|
||||
}
|
||||
|
||||
asmlinkage long sys_open(const char __user *filename, int flags, int mode)
|
||||
SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode)
|
||||
{
|
||||
long ret;
|
||||
|
||||
|
@ -1042,8 +1059,8 @@ asmlinkage long sys_open(const char __user *filename, int flags, int mode)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_openat(int dfd, const char __user *filename, int flags,
|
||||
int mode)
|
||||
SYSCALL_DEFINE4(openat, int, dfd, const char __user *, filename, int, flags,
|
||||
int, mode)
|
||||
{
|
||||
long ret;
|
||||
|
||||
|
@ -1062,7 +1079,7 @@ asmlinkage long sys_openat(int dfd, const char __user *filename, int flags,
|
|||
* For backward compatibility? Maybe this should be moved
|
||||
* into arch/i386 instead?
|
||||
*/
|
||||
asmlinkage long sys_creat(const char __user * pathname, int mode)
|
||||
SYSCALL_DEFINE2(creat, const char __user *, pathname, int, mode)
|
||||
{
|
||||
return sys_open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode);
|
||||
}
|
||||
|
@ -1098,7 +1115,7 @@ EXPORT_SYMBOL(filp_close);
|
|||
* releasing the fd. This ensures that one clone task can't release
|
||||
* an fd while another clone is opening it.
|
||||
*/
|
||||
asmlinkage long sys_close(unsigned int fd)
|
||||
SYSCALL_DEFINE1(close, unsigned int, fd)
|
||||
{
|
||||
struct file * filp;
|
||||
struct files_struct *files = current->files;
|
||||
|
@ -1131,14 +1148,13 @@ out_unlock:
|
|||
spin_unlock(&files->file_lock);
|
||||
return -EBADF;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(sys_close);
|
||||
|
||||
/*
|
||||
* This routine simulates a hangup on the tty, to arrange that users
|
||||
* are given clean terminals at login time.
|
||||
*/
|
||||
asmlinkage long sys_vhangup(void)
|
||||
SYSCALL_DEFINE0(vhangup)
|
||||
{
|
||||
if (capable(CAP_SYS_TTY_CONFIG)) {
|
||||
tty_vhangup_self();
|
||||
|
|
|
@ -1043,7 +1043,7 @@ int do_pipe(int *fd)
|
|||
* sys_pipe() is the normal C calling standard for creating
|
||||
* a pipe. It's not the way Unix traditionally does this, though.
|
||||
*/
|
||||
asmlinkage long __weak sys_pipe2(int __user *fildes, int flags)
|
||||
SYSCALL_DEFINE2(pipe2, int __user *, fildes, int, flags)
|
||||
{
|
||||
int fd[2];
|
||||
int error;
|
||||
|
@ -1059,7 +1059,7 @@ asmlinkage long __weak sys_pipe2(int __user *fildes, int flags)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long __weak sys_pipe(int __user *fildes)
|
||||
SYSCALL_DEFINE1(pipe, int __user *, fildes)
|
||||
{
|
||||
return sys_pipe2(fildes, 0);
|
||||
}
|
||||
|
|
|
@ -371,7 +371,8 @@ static inline struct super_block *quotactl_block(const char __user *special)
|
|||
* calls. Maybe we need to add the process quotas etc. in the future,
|
||||
* but we probably should use rlimits for that.
|
||||
*/
|
||||
asmlinkage long sys_quotactl(unsigned int cmd, const char __user *special, qid_t id, void __user *addr)
|
||||
SYSCALL_DEFINE4(quotactl, unsigned int, cmd, const char __user *, special,
|
||||
qid_t, id, void __user *, addr)
|
||||
{
|
||||
uint cmds, type;
|
||||
struct super_block *sb = NULL;
|
||||
|
|
|
@ -147,7 +147,7 @@ loff_t vfs_llseek(struct file *file, loff_t offset, int origin)
|
|||
}
|
||||
EXPORT_SYMBOL(vfs_llseek);
|
||||
|
||||
asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin)
|
||||
SYSCALL_DEFINE3(lseek, unsigned int, fd, off_t, offset, unsigned int, origin)
|
||||
{
|
||||
off_t retval;
|
||||
struct file * file;
|
||||
|
@ -171,9 +171,9 @@ bad:
|
|||
}
|
||||
|
||||
#ifdef __ARCH_WANT_SYS_LLSEEK
|
||||
asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high,
|
||||
unsigned long offset_low, loff_t __user * result,
|
||||
unsigned int origin)
|
||||
SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high,
|
||||
unsigned long, offset_low, loff_t __user *, result,
|
||||
unsigned int, origin)
|
||||
{
|
||||
int retval;
|
||||
struct file * file;
|
||||
|
@ -369,7 +369,7 @@ static inline void file_pos_write(struct file *file, loff_t pos)
|
|||
file->f_pos = pos;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
|
||||
SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)
|
||||
{
|
||||
struct file *file;
|
||||
ssize_t ret = -EBADF;
|
||||
|
@ -386,7 +386,8 @@ asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t sys_write(unsigned int fd, const char __user * buf, size_t count)
|
||||
SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf,
|
||||
size_t, count)
|
||||
{
|
||||
struct file *file;
|
||||
ssize_t ret = -EBADF;
|
||||
|
@ -403,8 +404,8 @@ asmlinkage ssize_t sys_write(unsigned int fd, const char __user * buf, size_t co
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf,
|
||||
size_t count, loff_t pos)
|
||||
SYSCALL_DEFINE(pread64)(unsigned int fd, char __user *buf,
|
||||
size_t count, loff_t pos)
|
||||
{
|
||||
struct file *file;
|
||||
ssize_t ret = -EBADF;
|
||||
|
@ -423,9 +424,17 @@ asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf,
|
|||
|
||||
return ret;
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_pread64(long fd, long buf, long count, loff_t pos)
|
||||
{
|
||||
return SYSC_pread64((unsigned int) fd, (char __user *) buf,
|
||||
(size_t) count, pos);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_pread64, SyS_pread64);
|
||||
#endif
|
||||
|
||||
asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf,
|
||||
size_t count, loff_t pos)
|
||||
SYSCALL_DEFINE(pwrite64)(unsigned int fd, const char __user *buf,
|
||||
size_t count, loff_t pos)
|
||||
{
|
||||
struct file *file;
|
||||
ssize_t ret = -EBADF;
|
||||
|
@ -444,6 +453,14 @@ asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf,
|
|||
|
||||
return ret;
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_pwrite64(long fd, long buf, long count, loff_t pos)
|
||||
{
|
||||
return SYSC_pwrite64((unsigned int) fd, (const char __user *) buf,
|
||||
(size_t) count, pos);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_pwrite64, SyS_pwrite64);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Reduce an iovec's length in-place. Return the resulting number of segments
|
||||
|
@ -672,8 +689,8 @@ ssize_t vfs_writev(struct file *file, const struct iovec __user *vec,
|
|||
|
||||
EXPORT_SYMBOL(vfs_writev);
|
||||
|
||||
asmlinkage ssize_t
|
||||
sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
|
||||
SYSCALL_DEFINE3(readv, unsigned long, fd, const struct iovec __user *, vec,
|
||||
unsigned long, vlen)
|
||||
{
|
||||
struct file *file;
|
||||
ssize_t ret = -EBADF;
|
||||
|
@ -693,8 +710,8 @@ sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t
|
||||
sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
|
||||
SYSCALL_DEFINE3(writev, unsigned long, fd, const struct iovec __user *, vec,
|
||||
unsigned long, vlen)
|
||||
{
|
||||
struct file *file;
|
||||
ssize_t ret = -EBADF;
|
||||
|
@ -812,7 +829,7 @@ out:
|
|||
return retval;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t __user *offset, size_t count)
|
||||
SYSCALL_DEFINE4(sendfile, int, out_fd, int, in_fd, off_t __user *, offset, size_t, count)
|
||||
{
|
||||
loff_t pos;
|
||||
off_t off;
|
||||
|
@ -831,7 +848,7 @@ asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t __user *offset, siz
|
|||
return do_sendfile(out_fd, in_fd, NULL, count, 0);
|
||||
}
|
||||
|
||||
asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd, loff_t __user *offset, size_t count)
|
||||
SYSCALL_DEFINE4(sendfile64, int, out_fd, int, in_fd, loff_t __user *, offset, size_t, count)
|
||||
{
|
||||
loff_t pos;
|
||||
ssize_t ret;
|
||||
|
|
|
@ -102,7 +102,8 @@ efault:
|
|||
return -EFAULT;
|
||||
}
|
||||
|
||||
asmlinkage long old_readdir(unsigned int fd, struct old_linux_dirent __user * dirent, unsigned int count)
|
||||
SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
|
||||
struct old_linux_dirent __user *, dirent, unsigned int, count)
|
||||
{
|
||||
int error;
|
||||
struct file * file;
|
||||
|
@ -187,7 +188,8 @@ efault:
|
|||
return -EFAULT;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getdents(unsigned int fd, struct linux_dirent __user * dirent, unsigned int count)
|
||||
SYSCALL_DEFINE3(getdents, unsigned int, fd,
|
||||
struct linux_dirent __user *, dirent, unsigned int, count)
|
||||
{
|
||||
struct file * file;
|
||||
struct linux_dirent __user * lastdirent;
|
||||
|
@ -268,7 +270,8 @@ efault:
|
|||
return -EFAULT;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getdents64(unsigned int fd, struct linux_dirent64 __user * dirent, unsigned int count)
|
||||
SYSCALL_DEFINE3(getdents64, unsigned int, fd,
|
||||
struct linux_dirent64 __user *, dirent, unsigned int, count)
|
||||
{
|
||||
struct file * file;
|
||||
struct linux_dirent64 __user * lastdirent;
|
||||
|
|
27
fs/select.c
27
fs/select.c
|
@ -557,8 +557,8 @@ out_nofds:
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp,
|
||||
fd_set __user *exp, struct timeval __user *tvp)
|
||||
SYSCALL_DEFINE5(select, int, n, fd_set __user *, inp, fd_set __user *, outp,
|
||||
fd_set __user *, exp, struct timeval __user *, tvp)
|
||||
{
|
||||
struct timespec end_time, *to = NULL;
|
||||
struct timeval tv;
|
||||
|
@ -582,9 +582,9 @@ asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp,
|
|||
}
|
||||
|
||||
#ifdef HAVE_SET_RESTORE_SIGMASK
|
||||
asmlinkage long sys_pselect7(int n, fd_set __user *inp, fd_set __user *outp,
|
||||
fd_set __user *exp, struct timespec __user *tsp,
|
||||
const sigset_t __user *sigmask, size_t sigsetsize)
|
||||
static long do_pselect(int n, fd_set __user *inp, fd_set __user *outp,
|
||||
fd_set __user *exp, struct timespec __user *tsp,
|
||||
const sigset_t __user *sigmask, size_t sigsetsize)
|
||||
{
|
||||
sigset_t ksigmask, sigsaved;
|
||||
struct timespec ts, end_time, *to = NULL;
|
||||
|
@ -636,8 +636,9 @@ asmlinkage long sys_pselect7(int n, fd_set __user *inp, fd_set __user *outp,
|
|||
* which has a pointer to the sigset_t itself followed by a size_t containing
|
||||
* the sigset size.
|
||||
*/
|
||||
asmlinkage long sys_pselect6(int n, fd_set __user *inp, fd_set __user *outp,
|
||||
fd_set __user *exp, struct timespec __user *tsp, void __user *sig)
|
||||
SYSCALL_DEFINE6(pselect6, int, n, fd_set __user *, inp, fd_set __user *, outp,
|
||||
fd_set __user *, exp, struct timespec __user *, tsp,
|
||||
void __user *, sig)
|
||||
{
|
||||
size_t sigsetsize = 0;
|
||||
sigset_t __user *up = NULL;
|
||||
|
@ -650,7 +651,7 @@ asmlinkage long sys_pselect6(int n, fd_set __user *inp, fd_set __user *outp,
|
|||
return -EFAULT;
|
||||
}
|
||||
|
||||
return sys_pselect7(n, inp, outp, exp, tsp, up, sigsetsize);
|
||||
return do_pselect(n, inp, outp, exp, tsp, up, sigsetsize);
|
||||
}
|
||||
#endif /* HAVE_SET_RESTORE_SIGMASK */
|
||||
|
||||
|
@ -854,8 +855,8 @@ static long do_restart_poll(struct restart_block *restart_block)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds,
|
||||
long timeout_msecs)
|
||||
SYSCALL_DEFINE3(poll, struct pollfd __user *, ufds, unsigned int, nfds,
|
||||
long, timeout_msecs)
|
||||
{
|
||||
struct timespec end_time, *to = NULL;
|
||||
int ret;
|
||||
|
@ -889,9 +890,9 @@ asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds,
|
|||
}
|
||||
|
||||
#ifdef HAVE_SET_RESTORE_SIGMASK
|
||||
asmlinkage long sys_ppoll(struct pollfd __user *ufds, unsigned int nfds,
|
||||
struct timespec __user *tsp, const sigset_t __user *sigmask,
|
||||
size_t sigsetsize)
|
||||
SYSCALL_DEFINE5(ppoll, struct pollfd __user *, ufds, unsigned int, nfds,
|
||||
struct timespec __user *, tsp, const sigset_t __user *, sigmask,
|
||||
size_t, sigsetsize)
|
||||
{
|
||||
sigset_t ksigmask, sigsaved;
|
||||
struct timespec ts, end_time, *to = NULL;
|
||||
|
|
|
@ -205,8 +205,8 @@ static const struct file_operations signalfd_fops = {
|
|||
.read = signalfd_read,
|
||||
};
|
||||
|
||||
asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask,
|
||||
size_t sizemask, int flags)
|
||||
SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask,
|
||||
size_t, sizemask, int, flags)
|
||||
{
|
||||
sigset_t sigmask;
|
||||
struct signalfd_ctx *ctx;
|
||||
|
@ -259,8 +259,8 @@ asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask,
|
|||
return ufd;
|
||||
}
|
||||
|
||||
asmlinkage long sys_signalfd(int ufd, sigset_t __user *user_mask,
|
||||
size_t sizemask)
|
||||
SYSCALL_DEFINE3(signalfd, int, ufd, sigset_t __user *, user_mask,
|
||||
size_t, sizemask)
|
||||
{
|
||||
return sys_signalfd4(ufd, user_mask, sizemask, 0);
|
||||
}
|
||||
|
|
12
fs/splice.c
12
fs/splice.c
|
@ -1435,8 +1435,8 @@ static long vmsplice_to_pipe(struct file *file, const struct iovec __user *iov,
|
|||
* Currently we punt and implement it as a normal copy, see pipe_to_user().
|
||||
*
|
||||
*/
|
||||
asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov,
|
||||
unsigned long nr_segs, unsigned int flags)
|
||||
SYSCALL_DEFINE4(vmsplice, int, fd, const struct iovec __user *, iov,
|
||||
unsigned long, nr_segs, unsigned int, flags)
|
||||
{
|
||||
struct file *file;
|
||||
long error;
|
||||
|
@ -1461,9 +1461,9 @@ asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov,
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_splice(int fd_in, loff_t __user *off_in,
|
||||
int fd_out, loff_t __user *off_out,
|
||||
size_t len, unsigned int flags)
|
||||
SYSCALL_DEFINE6(splice, int, fd_in, loff_t __user *, off_in,
|
||||
int, fd_out, loff_t __user *, off_out,
|
||||
size_t, len, unsigned int, flags)
|
||||
{
|
||||
long error;
|
||||
struct file *in, *out;
|
||||
|
@ -1685,7 +1685,7 @@ static long do_tee(struct file *in, struct file *out, size_t len,
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_tee(int fdin, int fdout, size_t len, unsigned int flags)
|
||||
SYSCALL_DEFINE4(tee, int, fdin, int, fdout, size_t, len, unsigned int, flags)
|
||||
{
|
||||
struct file *in;
|
||||
int error, fput_in;
|
||||
|
|
38
fs/stat.c
38
fs/stat.c
|
@ -152,7 +152,7 @@ static int cp_old_stat(struct kstat *stat, struct __old_kernel_stat __user * sta
|
|||
return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_stat(char __user * filename, struct __old_kernel_stat __user * statbuf)
|
||||
SYSCALL_DEFINE2(stat, char __user *, filename, struct __old_kernel_stat __user *, statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = vfs_stat_fd(AT_FDCWD, filename, &stat);
|
||||
|
@ -162,7 +162,8 @@ asmlinkage long sys_stat(char __user * filename, struct __old_kernel_stat __user
|
|||
|
||||
return error;
|
||||
}
|
||||
asmlinkage long sys_lstat(char __user * filename, struct __old_kernel_stat __user * statbuf)
|
||||
|
||||
SYSCALL_DEFINE2(lstat, char __user *, filename, struct __old_kernel_stat __user *, statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = vfs_lstat_fd(AT_FDCWD, filename, &stat);
|
||||
|
@ -172,7 +173,8 @@ asmlinkage long sys_lstat(char __user * filename, struct __old_kernel_stat __use
|
|||
|
||||
return error;
|
||||
}
|
||||
asmlinkage long sys_fstat(unsigned int fd, struct __old_kernel_stat __user * statbuf)
|
||||
|
||||
SYSCALL_DEFINE2(fstat, unsigned int, fd, struct __old_kernel_stat __user *, statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = vfs_fstat(fd, &stat);
|
||||
|
@ -235,7 +237,7 @@ static int cp_new_stat(struct kstat *stat, struct stat __user *statbuf)
|
|||
return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_newstat(char __user *filename, struct stat __user *statbuf)
|
||||
SYSCALL_DEFINE2(newstat, char __user *, filename, struct stat __user *, statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = vfs_stat_fd(AT_FDCWD, filename, &stat);
|
||||
|
@ -246,7 +248,7 @@ asmlinkage long sys_newstat(char __user *filename, struct stat __user *statbuf)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_newlstat(char __user *filename, struct stat __user *statbuf)
|
||||
SYSCALL_DEFINE2(newlstat, char __user *, filename, struct stat __user *, statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = vfs_lstat_fd(AT_FDCWD, filename, &stat);
|
||||
|
@ -258,8 +260,8 @@ asmlinkage long sys_newlstat(char __user *filename, struct stat __user *statbuf)
|
|||
}
|
||||
|
||||
#if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT)
|
||||
asmlinkage long sys_newfstatat(int dfd, char __user *filename,
|
||||
struct stat __user *statbuf, int flag)
|
||||
SYSCALL_DEFINE4(newfstatat, int, dfd, char __user *, filename,
|
||||
struct stat __user *, statbuf, int, flag)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = -EINVAL;
|
||||
|
@ -280,7 +282,7 @@ out:
|
|||
}
|
||||
#endif
|
||||
|
||||
asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf)
|
||||
SYSCALL_DEFINE2(newfstat, unsigned int, fd, struct stat __user *, statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = vfs_fstat(fd, &stat);
|
||||
|
@ -291,8 +293,8 @@ asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_readlinkat(int dfd, const char __user *pathname,
|
||||
char __user *buf, int bufsiz)
|
||||
SYSCALL_DEFINE4(readlinkat, int, dfd, const char __user *, pathname,
|
||||
char __user *, buf, int, bufsiz)
|
||||
{
|
||||
struct path path;
|
||||
int error;
|
||||
|
@ -318,8 +320,8 @@ asmlinkage long sys_readlinkat(int dfd, const char __user *pathname,
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_readlink(const char __user *path, char __user *buf,
|
||||
int bufsiz)
|
||||
SYSCALL_DEFINE3(readlink, const char __user *, path, char __user *, buf,
|
||||
int, bufsiz)
|
||||
{
|
||||
return sys_readlinkat(AT_FDCWD, path, buf, bufsiz);
|
||||
}
|
||||
|
@ -365,7 +367,7 @@ static long cp_new_stat64(struct kstat *stat, struct stat64 __user *statbuf)
|
|||
return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_stat64(char __user * filename, struct stat64 __user * statbuf)
|
||||
SYSCALL_DEFINE2(stat64, char __user *, filename, struct stat64 __user *, statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = vfs_stat(filename, &stat);
|
||||
|
@ -375,7 +377,8 @@ asmlinkage long sys_stat64(char __user * filename, struct stat64 __user * statbu
|
|||
|
||||
return error;
|
||||
}
|
||||
asmlinkage long sys_lstat64(char __user * filename, struct stat64 __user * statbuf)
|
||||
|
||||
SYSCALL_DEFINE2(lstat64, char __user *, filename, struct stat64 __user *, statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = vfs_lstat(filename, &stat);
|
||||
|
@ -385,7 +388,8 @@ asmlinkage long sys_lstat64(char __user * filename, struct stat64 __user * statb
|
|||
|
||||
return error;
|
||||
}
|
||||
asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user * statbuf)
|
||||
|
||||
SYSCALL_DEFINE2(fstat64, unsigned long, fd, struct stat64 __user *, statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = vfs_fstat(fd, &stat);
|
||||
|
@ -396,8 +400,8 @@ asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user * statbuf)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_fstatat64(int dfd, char __user *filename,
|
||||
struct stat64 __user *statbuf, int flag)
|
||||
SYSCALL_DEFINE4(fstatat64, int, dfd, char __user *, filename,
|
||||
struct stat64 __user *, statbuf, int, flag)
|
||||
{
|
||||
struct kstat stat;
|
||||
int error = -EINVAL;
|
||||
|
|
|
@ -544,7 +544,7 @@ rescan:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
asmlinkage long sys_ustat(unsigned dev, struct ustat __user * ubuf)
|
||||
SYSCALL_DEFINE2(ustat, unsigned, dev, struct ustat __user *, ubuf)
|
||||
{
|
||||
struct super_block *s;
|
||||
struct ustat tmp;
|
||||
|
|
32
fs/sync.c
32
fs/sync.c
|
@ -36,7 +36,7 @@ static void do_sync(unsigned long wait)
|
|||
laptop_sync_completion();
|
||||
}
|
||||
|
||||
asmlinkage long sys_sync(void)
|
||||
SYSCALL_DEFINE0(sync)
|
||||
{
|
||||
do_sync(1);
|
||||
return 0;
|
||||
|
@ -144,12 +144,12 @@ static int do_fsync(unsigned int fd, int datasync)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_fsync(unsigned int fd)
|
||||
SYSCALL_DEFINE1(fsync, unsigned int, fd)
|
||||
{
|
||||
return do_fsync(fd, 0);
|
||||
}
|
||||
|
||||
asmlinkage long sys_fdatasync(unsigned int fd)
|
||||
SYSCALL_DEFINE1(fdatasync, unsigned int, fd)
|
||||
{
|
||||
return do_fsync(fd, 1);
|
||||
}
|
||||
|
@ -201,8 +201,8 @@ asmlinkage long sys_fdatasync(unsigned int fd)
|
|||
* already-instantiated disk blocks, there are no guarantees here that the data
|
||||
* will be available after a crash.
|
||||
*/
|
||||
asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes,
|
||||
unsigned int flags)
|
||||
SYSCALL_DEFINE(sync_file_range)(int fd, loff_t offset, loff_t nbytes,
|
||||
unsigned int flags)
|
||||
{
|
||||
int ret;
|
||||
struct file *file;
|
||||
|
@ -262,14 +262,32 @@ out_put:
|
|||
out:
|
||||
return ret;
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_sync_file_range(long fd, loff_t offset, loff_t nbytes,
|
||||
long flags)
|
||||
{
|
||||
return SYSC_sync_file_range((int) fd, offset, nbytes,
|
||||
(unsigned int) flags);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_sync_file_range, SyS_sync_file_range);
|
||||
#endif
|
||||
|
||||
/* It would be nice if people remember that not all the world's an i386
|
||||
when they introduce new system calls */
|
||||
asmlinkage long sys_sync_file_range2(int fd, unsigned int flags,
|
||||
loff_t offset, loff_t nbytes)
|
||||
SYSCALL_DEFINE(sync_file_range2)(int fd, unsigned int flags,
|
||||
loff_t offset, loff_t nbytes)
|
||||
{
|
||||
return sys_sync_file_range(fd, offset, nbytes, flags);
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_sync_file_range2(long fd, long flags,
|
||||
loff_t offset, loff_t nbytes)
|
||||
{
|
||||
return SYSC_sync_file_range2((int) fd, (unsigned int) flags,
|
||||
offset, nbytes);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_sync_file_range2, SyS_sync_file_range2);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* `endbyte' is inclusive
|
||||
|
|
10
fs/timerfd.c
10
fs/timerfd.c
|
@ -177,7 +177,7 @@ static struct file *timerfd_fget(int fd)
|
|||
return file;
|
||||
}
|
||||
|
||||
asmlinkage long sys_timerfd_create(int clockid, int flags)
|
||||
SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags)
|
||||
{
|
||||
int ufd;
|
||||
struct timerfd_ctx *ctx;
|
||||
|
@ -208,9 +208,9 @@ asmlinkage long sys_timerfd_create(int clockid, int flags)
|
|||
return ufd;
|
||||
}
|
||||
|
||||
asmlinkage long sys_timerfd_settime(int ufd, int flags,
|
||||
const struct itimerspec __user *utmr,
|
||||
struct itimerspec __user *otmr)
|
||||
SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags,
|
||||
const struct itimerspec __user *, utmr,
|
||||
struct itimerspec __user *, otmr)
|
||||
{
|
||||
struct file *file;
|
||||
struct timerfd_ctx *ctx;
|
||||
|
@ -265,7 +265,7 @@ asmlinkage long sys_timerfd_settime(int ufd, int flags,
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_timerfd_gettime(int ufd, struct itimerspec __user *otmr)
|
||||
SYSCALL_DEFINE2(timerfd_gettime, int, ufd, struct itimerspec __user *, otmr)
|
||||
{
|
||||
struct file *file;
|
||||
struct timerfd_ctx *ctx;
|
||||
|
|
11
fs/utimes.c
11
fs/utimes.c
|
@ -24,7 +24,7 @@
|
|||
* must be owner or have write permission.
|
||||
* Else, update from *times, must be owner or super user.
|
||||
*/
|
||||
asmlinkage long sys_utime(char __user *filename, struct utimbuf __user *times)
|
||||
SYSCALL_DEFINE2(utime, char __user *, filename, struct utimbuf __user *, times)
|
||||
{
|
||||
struct timespec tv[2];
|
||||
|
||||
|
@ -170,7 +170,8 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __user *utimes, int flags)
|
||||
SYSCALL_DEFINE4(utimensat, int, dfd, char __user *, filename,
|
||||
struct timespec __user *, utimes, int, flags)
|
||||
{
|
||||
struct timespec tstimes[2];
|
||||
|
||||
|
@ -187,7 +188,8 @@ asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __
|
|||
return do_utimes(dfd, filename, utimes ? tstimes : NULL, flags);
|
||||
}
|
||||
|
||||
asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __user *utimes)
|
||||
SYSCALL_DEFINE3(futimesat, int, dfd, char __user *, filename,
|
||||
struct timeval __user *, utimes)
|
||||
{
|
||||
struct timeval times[2];
|
||||
struct timespec tstimes[2];
|
||||
|
@ -214,7 +216,8 @@ asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __u
|
|||
return do_utimes(dfd, filename, utimes ? tstimes : NULL, 0);
|
||||
}
|
||||
|
||||
asmlinkage long sys_utimes(char __user *filename, struct timeval __user *utimes)
|
||||
SYSCALL_DEFINE2(utimes, char __user *, filename,
|
||||
struct timeval __user *, utimes)
|
||||
{
|
||||
return sys_futimesat(AT_FDCWD, filename, utimes);
|
||||
}
|
||||
|
|
53
fs/xattr.c
53
fs/xattr.c
|
@ -251,9 +251,9 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value,
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_setxattr(const char __user *pathname, const char __user *name,
|
||||
const void __user *value, size_t size, int flags)
|
||||
SYSCALL_DEFINE5(setxattr, const char __user *, pathname,
|
||||
const char __user *, name, const void __user *, value,
|
||||
size_t, size, int, flags)
|
||||
{
|
||||
struct path path;
|
||||
int error;
|
||||
|
@ -270,9 +270,9 @@ sys_setxattr(const char __user *pathname, const char __user *name,
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_lsetxattr(const char __user *pathname, const char __user *name,
|
||||
const void __user *value, size_t size, int flags)
|
||||
SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname,
|
||||
const char __user *, name, const void __user *, value,
|
||||
size_t, size, int, flags)
|
||||
{
|
||||
struct path path;
|
||||
int error;
|
||||
|
@ -289,9 +289,8 @@ sys_lsetxattr(const char __user *pathname, const char __user *name,
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_fsetxattr(int fd, const char __user *name, const void __user *value,
|
||||
size_t size, int flags)
|
||||
SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
|
||||
const void __user *,value, size_t, size, int, flags)
|
||||
{
|
||||
struct file *f;
|
||||
struct dentry *dentry;
|
||||
|
@ -349,9 +348,8 @@ getxattr(struct dentry *d, const char __user *name, void __user *value,
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t
|
||||
sys_getxattr(const char __user *pathname, const char __user *name,
|
||||
void __user *value, size_t size)
|
||||
SYSCALL_DEFINE4(getxattr, const char __user *, pathname,
|
||||
const char __user *, name, void __user *, value, size_t, size)
|
||||
{
|
||||
struct path path;
|
||||
ssize_t error;
|
||||
|
@ -364,9 +362,8 @@ sys_getxattr(const char __user *pathname, const char __user *name,
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t
|
||||
sys_lgetxattr(const char __user *pathname, const char __user *name, void __user *value,
|
||||
size_t size)
|
||||
SYSCALL_DEFINE4(lgetxattr, const char __user *, pathname,
|
||||
const char __user *, name, void __user *, value, size_t, size)
|
||||
{
|
||||
struct path path;
|
||||
ssize_t error;
|
||||
|
@ -379,8 +376,8 @@ sys_lgetxattr(const char __user *pathname, const char __user *name, void __user
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t
|
||||
sys_fgetxattr(int fd, const char __user *name, void __user *value, size_t size)
|
||||
SYSCALL_DEFINE4(fgetxattr, int, fd, const char __user *, name,
|
||||
void __user *, value, size_t, size)
|
||||
{
|
||||
struct file *f;
|
||||
ssize_t error = -EBADF;
|
||||
|
@ -424,8 +421,8 @@ listxattr(struct dentry *d, char __user *list, size_t size)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t
|
||||
sys_listxattr(const char __user *pathname, char __user *list, size_t size)
|
||||
SYSCALL_DEFINE3(listxattr, const char __user *, pathname, char __user *, list,
|
||||
size_t, size)
|
||||
{
|
||||
struct path path;
|
||||
ssize_t error;
|
||||
|
@ -438,8 +435,8 @@ sys_listxattr(const char __user *pathname, char __user *list, size_t size)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t
|
||||
sys_llistxattr(const char __user *pathname, char __user *list, size_t size)
|
||||
SYSCALL_DEFINE3(llistxattr, const char __user *, pathname, char __user *, list,
|
||||
size_t, size)
|
||||
{
|
||||
struct path path;
|
||||
ssize_t error;
|
||||
|
@ -452,8 +449,7 @@ sys_llistxattr(const char __user *pathname, char __user *list, size_t size)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t
|
||||
sys_flistxattr(int fd, char __user *list, size_t size)
|
||||
SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size)
|
||||
{
|
||||
struct file *f;
|
||||
ssize_t error = -EBADF;
|
||||
|
@ -485,8 +481,8 @@ removexattr(struct dentry *d, const char __user *name)
|
|||
return vfs_removexattr(d, kname);
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_removexattr(const char __user *pathname, const char __user *name)
|
||||
SYSCALL_DEFINE2(removexattr, const char __user *, pathname,
|
||||
const char __user *, name)
|
||||
{
|
||||
struct path path;
|
||||
int error;
|
||||
|
@ -503,8 +499,8 @@ sys_removexattr(const char __user *pathname, const char __user *name)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_lremovexattr(const char __user *pathname, const char __user *name)
|
||||
SYSCALL_DEFINE2(lremovexattr, const char __user *, pathname,
|
||||
const char __user *, name)
|
||||
{
|
||||
struct path path;
|
||||
int error;
|
||||
|
@ -521,8 +517,7 @@ sys_lremovexattr(const char __user *pathname, const char __user *name)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_fremovexattr(int fd, const char __user *name)
|
||||
SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
|
||||
{
|
||||
struct file *f;
|
||||
struct dentry *dentry;
|
||||
|
|
|
@ -280,5 +280,18 @@ asmlinkage long compat_sys_timerfd_settime(int ufd, int flags,
|
|||
asmlinkage long compat_sys_timerfd_gettime(int ufd,
|
||||
struct compat_itimerspec __user *otmr);
|
||||
|
||||
asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page,
|
||||
__u32 __user *pages,
|
||||
const int __user *nodes,
|
||||
int __user *status,
|
||||
int flags);
|
||||
asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename,
|
||||
struct compat_timeval __user *t);
|
||||
asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename,
|
||||
struct compat_stat __user *statbuf,
|
||||
int flag);
|
||||
asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
|
||||
int flags, int mode);
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
#endif /* _LINUX_COMPAT_H */
|
||||
|
|
|
@ -54,6 +54,7 @@ struct compat_stat;
|
|||
struct compat_timeval;
|
||||
struct robust_list_head;
|
||||
struct getcpu_cache;
|
||||
struct old_linux_dirent;
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/aio_abi.h>
|
||||
|
@ -65,6 +66,74 @@ struct getcpu_cache;
|
|||
#include <linux/quota.h>
|
||||
#include <linux/key.h>
|
||||
|
||||
#define __SC_DECL1(t1, a1) t1 a1
|
||||
#define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__)
|
||||
#define __SC_DECL3(t3, a3, ...) t3 a3, __SC_DECL2(__VA_ARGS__)
|
||||
#define __SC_DECL4(t4, a4, ...) t4 a4, __SC_DECL3(__VA_ARGS__)
|
||||
#define __SC_DECL5(t5, a5, ...) t5 a5, __SC_DECL4(__VA_ARGS__)
|
||||
#define __SC_DECL6(t6, a6, ...) t6 a6, __SC_DECL5(__VA_ARGS__)
|
||||
|
||||
#define __SC_LONG1(t1, a1) long a1
|
||||
#define __SC_LONG2(t2, a2, ...) long a2, __SC_LONG1(__VA_ARGS__)
|
||||
#define __SC_LONG3(t3, a3, ...) long a3, __SC_LONG2(__VA_ARGS__)
|
||||
#define __SC_LONG4(t4, a4, ...) long a4, __SC_LONG3(__VA_ARGS__)
|
||||
#define __SC_LONG5(t5, a5, ...) long a5, __SC_LONG4(__VA_ARGS__)
|
||||
#define __SC_LONG6(t6, a6, ...) long a6, __SC_LONG5(__VA_ARGS__)
|
||||
|
||||
#define __SC_CAST1(t1, a1) (t1) a1
|
||||
#define __SC_CAST2(t2, a2, ...) (t2) a2, __SC_CAST1(__VA_ARGS__)
|
||||
#define __SC_CAST3(t3, a3, ...) (t3) a3, __SC_CAST2(__VA_ARGS__)
|
||||
#define __SC_CAST4(t4, a4, ...) (t4) a4, __SC_CAST3(__VA_ARGS__)
|
||||
#define __SC_CAST5(t5, a5, ...) (t5) a5, __SC_CAST4(__VA_ARGS__)
|
||||
#define __SC_CAST6(t6, a6, ...) (t6) a6, __SC_CAST5(__VA_ARGS__)
|
||||
|
||||
#define __SC_TEST(type) BUILD_BUG_ON(sizeof(type) > sizeof(long))
|
||||
#define __SC_TEST1(t1, a1) __SC_TEST(t1)
|
||||
#define __SC_TEST2(t2, a2, ...) __SC_TEST(t2); __SC_TEST1(__VA_ARGS__)
|
||||
#define __SC_TEST3(t3, a3, ...) __SC_TEST(t3); __SC_TEST2(__VA_ARGS__)
|
||||
#define __SC_TEST4(t4, a4, ...) __SC_TEST(t4); __SC_TEST3(__VA_ARGS__)
|
||||
#define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__)
|
||||
#define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__)
|
||||
|
||||
#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)
|
||||
#define SYSCALL_DEFINE1(...) SYSCALL_DEFINEx(1, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE2(...) SYSCALL_DEFINEx(2, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE3(...) SYSCALL_DEFINEx(3, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE4(...) SYSCALL_DEFINEx(4, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE5(...) SYSCALL_DEFINEx(5, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE6(...) SYSCALL_DEFINEx(6, __VA_ARGS__)
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \
|
||||
"\t.globl ." #alias "\n\t.set ." #alias ", ." #name)
|
||||
#else
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
asm ("\t.globl " #alias "\n\t.set " #alias ", " #name)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
|
||||
#define SYSCALL_DEFINE(name) static inline long SYSC_##name
|
||||
#define SYSCALL_DEFINEx(x, name, ...) \
|
||||
asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)); \
|
||||
static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)); \
|
||||
asmlinkage long SyS_##name(__SC_LONG##x(__VA_ARGS__)) \
|
||||
{ \
|
||||
__SC_TEST##x(__VA_ARGS__); \
|
||||
return (long) SYSC_##name(__SC_CAST##x(__VA_ARGS__)); \
|
||||
} \
|
||||
SYSCALL_ALIAS(sys_##name, SyS_##name); \
|
||||
static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__))
|
||||
|
||||
#else /* CONFIG_HAVE_SYSCALL_WRAPPERS */
|
||||
|
||||
#define SYSCALL_DEFINE(name) asmlinkage long sys_##name
|
||||
#define SYSCALL_DEFINEx(x, name, ...) \
|
||||
asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__))
|
||||
|
||||
#endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */
|
||||
|
||||
asmlinkage long sys_time(time_t __user *tloc);
|
||||
asmlinkage long sys_stime(time_t __user *tptr);
|
||||
asmlinkage long sys_gettimeofday(struct timeval __user *tv,
|
||||
|
@ -77,7 +146,7 @@ asmlinkage long sys_times(struct tms __user *tbuf);
|
|||
|
||||
asmlinkage long sys_gettid(void);
|
||||
asmlinkage long sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp);
|
||||
asmlinkage unsigned long sys_alarm(unsigned int seconds);
|
||||
asmlinkage long sys_alarm(unsigned int seconds);
|
||||
asmlinkage long sys_getpid(void);
|
||||
asmlinkage long sys_getppid(void);
|
||||
asmlinkage long sys_getuid(void);
|
||||
|
@ -166,7 +235,7 @@ asmlinkage long sys_kexec_load(unsigned long entry, unsigned long nr_segments,
|
|||
unsigned long flags);
|
||||
|
||||
asmlinkage long sys_exit(int error_code);
|
||||
asmlinkage void sys_exit_group(int error_code);
|
||||
asmlinkage long sys_exit_group(int error_code);
|
||||
asmlinkage long sys_wait4(pid_t pid, int __user *stat_addr,
|
||||
int options, struct rusage __user *ru);
|
||||
asmlinkage long sys_waitid(int which, pid_t pid,
|
||||
|
@ -196,7 +265,7 @@ asmlinkage long sys_tkill(int pid, int sig);
|
|||
asmlinkage long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo);
|
||||
asmlinkage long sys_sgetmask(void);
|
||||
asmlinkage long sys_ssetmask(int newmask);
|
||||
asmlinkage unsigned long sys_signal(int sig, __sighandler_t handler);
|
||||
asmlinkage long sys_signal(int sig, __sighandler_t handler);
|
||||
asmlinkage long sys_pause(void);
|
||||
|
||||
asmlinkage long sys_sync(void);
|
||||
|
@ -246,29 +315,29 @@ asmlinkage long sys_lsetxattr(const char __user *path, const char __user *name,
|
|||
const void __user *value, size_t size, int flags);
|
||||
asmlinkage long sys_fsetxattr(int fd, const char __user *name,
|
||||
const void __user *value, size_t size, int flags);
|
||||
asmlinkage ssize_t sys_getxattr(const char __user *path, const char __user *name,
|
||||
void __user *value, size_t size);
|
||||
asmlinkage ssize_t sys_lgetxattr(const char __user *path, const char __user *name,
|
||||
void __user *value, size_t size);
|
||||
asmlinkage ssize_t sys_fgetxattr(int fd, const char __user *name,
|
||||
void __user *value, size_t size);
|
||||
asmlinkage ssize_t sys_listxattr(const char __user *path, char __user *list,
|
||||
size_t size);
|
||||
asmlinkage ssize_t sys_llistxattr(const char __user *path, char __user *list,
|
||||
size_t size);
|
||||
asmlinkage ssize_t sys_flistxattr(int fd, char __user *list, size_t size);
|
||||
asmlinkage long sys_getxattr(const char __user *path, const char __user *name,
|
||||
void __user *value, size_t size);
|
||||
asmlinkage long sys_lgetxattr(const char __user *path, const char __user *name,
|
||||
void __user *value, size_t size);
|
||||
asmlinkage long sys_fgetxattr(int fd, const char __user *name,
|
||||
void __user *value, size_t size);
|
||||
asmlinkage long sys_listxattr(const char __user *path, char __user *list,
|
||||
size_t size);
|
||||
asmlinkage long sys_llistxattr(const char __user *path, char __user *list,
|
||||
size_t size);
|
||||
asmlinkage long sys_flistxattr(int fd, char __user *list, size_t size);
|
||||
asmlinkage long sys_removexattr(const char __user *path,
|
||||
const char __user *name);
|
||||
asmlinkage long sys_lremovexattr(const char __user *path,
|
||||
const char __user *name);
|
||||
asmlinkage long sys_fremovexattr(int fd, const char __user *name);
|
||||
|
||||
asmlinkage unsigned long sys_brk(unsigned long brk);
|
||||
asmlinkage 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,
|
||||
unsigned long old_len, unsigned long new_len,
|
||||
unsigned long flags, unsigned long new_addr);
|
||||
asmlinkage long sys_mremap(unsigned long addr,
|
||||
unsigned long old_len, unsigned long new_len,
|
||||
unsigned long flags, unsigned long new_addr);
|
||||
asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size,
|
||||
unsigned long prot, unsigned long pgoff,
|
||||
unsigned long flags);
|
||||
|
@ -321,10 +390,10 @@ asmlinkage long sys_io_submit(aio_context_t, long,
|
|||
struct iocb __user * __user *);
|
||||
asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
|
||||
struct io_event __user *result);
|
||||
asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd,
|
||||
off_t __user *offset, size_t count);
|
||||
asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd,
|
||||
loff_t __user *offset, size_t count);
|
||||
asmlinkage long sys_sendfile(int out_fd, int in_fd,
|
||||
off_t __user *offset, size_t count);
|
||||
asmlinkage long sys_sendfile64(int out_fd, int in_fd,
|
||||
loff_t __user *offset, size_t count);
|
||||
asmlinkage long sys_readlink(const char __user *path,
|
||||
char __user *buf, int bufsiz);
|
||||
asmlinkage long sys_creat(const char __user *pathname, int mode);
|
||||
|
@ -368,26 +437,25 @@ asmlinkage long sys_utime(char __user *filename,
|
|||
struct utimbuf __user *times);
|
||||
asmlinkage long sys_utimes(char __user *filename,
|
||||
struct timeval __user *utimes);
|
||||
asmlinkage off_t sys_lseek(unsigned int fd, off_t offset,
|
||||
unsigned int origin);
|
||||
asmlinkage long sys_lseek(unsigned int fd, off_t offset,
|
||||
unsigned int origin);
|
||||
asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high,
|
||||
unsigned long offset_low, loff_t __user *result,
|
||||
unsigned int origin);
|
||||
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);
|
||||
asmlinkage ssize_t sys_readv(unsigned long fd,
|
||||
const struct iovec __user *vec,
|
||||
unsigned long vlen);
|
||||
asmlinkage ssize_t sys_write(unsigned int fd, const char __user *buf,
|
||||
size_t count);
|
||||
asmlinkage ssize_t sys_writev(unsigned long fd,
|
||||
const struct iovec __user *vec,
|
||||
unsigned long vlen);
|
||||
asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf,
|
||||
size_t count, loff_t pos);
|
||||
asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf,
|
||||
size_t count, loff_t pos);
|
||||
asmlinkage long sys_read(unsigned int fd, char __user *buf, size_t count);
|
||||
asmlinkage long sys_readahead(int fd, loff_t offset, size_t count);
|
||||
asmlinkage long sys_readv(unsigned long fd,
|
||||
const struct iovec __user *vec,
|
||||
unsigned long vlen);
|
||||
asmlinkage long sys_write(unsigned int fd, const char __user *buf,
|
||||
size_t count);
|
||||
asmlinkage long sys_writev(unsigned long fd,
|
||||
const struct iovec __user *vec,
|
||||
unsigned long vlen);
|
||||
asmlinkage long sys_pread64(unsigned int fd, char __user *buf,
|
||||
size_t count, loff_t pos);
|
||||
asmlinkage long sys_pwrite64(unsigned int fd, const char __user *buf,
|
||||
size_t count, loff_t pos);
|
||||
asmlinkage long sys_getcwd(char __user *buf, unsigned long size);
|
||||
asmlinkage long sys_mkdir(const char __user *pathname, int mode);
|
||||
asmlinkage long sys_chdir(const char __user *filename);
|
||||
|
@ -476,7 +544,7 @@ asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf);
|
|||
asmlinkage long sys_mq_open(const char __user *name, int oflag, mode_t mode, struct mq_attr __user *attr);
|
||||
asmlinkage long sys_mq_unlink(const char __user *name);
|
||||
asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec __user *abs_timeout);
|
||||
asmlinkage ssize_t sys_mq_timedreceive(mqd_t mqdes, char __user *msg_ptr, size_t msg_len, unsigned int __user *msg_prio, const struct timespec __user *abs_timeout);
|
||||
asmlinkage long sys_mq_timedreceive(mqd_t mqdes, char __user *msg_ptr, size_t msg_len, unsigned int __user *msg_prio, const struct timespec __user *abs_timeout);
|
||||
asmlinkage long sys_mq_notify(mqd_t mqdes, const struct sigevent __user *notification);
|
||||
asmlinkage long sys_mq_getsetattr(mqd_t mqdes, const struct mq_attr __user *mqstat, struct mq_attr __user *omqstat);
|
||||
|
||||
|
@ -530,11 +598,6 @@ asmlinkage long sys_move_pages(pid_t pid, unsigned long nr_pages,
|
|||
const int __user *nodes,
|
||||
int __user *status,
|
||||
int flags);
|
||||
asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page,
|
||||
__u32 __user *pages,
|
||||
const int __user *nodes,
|
||||
int __user *status,
|
||||
int flags);
|
||||
asmlinkage long sys_mbind(unsigned long start, unsigned long len,
|
||||
unsigned long mode,
|
||||
unsigned long __user *nmask,
|
||||
|
@ -583,13 +646,6 @@ asmlinkage long sys_readlinkat(int dfd, const char __user *path, char __user *bu
|
|||
int bufsiz);
|
||||
asmlinkage long sys_utimensat(int dfd, char __user *filename,
|
||||
struct timespec __user *utimes, int flags);
|
||||
asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename,
|
||||
struct compat_timeval __user *t);
|
||||
asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename,
|
||||
struct compat_stat __user *statbuf,
|
||||
int flag);
|
||||
asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
|
||||
int flags, int mode);
|
||||
asmlinkage long sys_unshare(unsigned long unshare_flags);
|
||||
|
||||
asmlinkage long sys_splice(int fd_in, loff_t __user *off_in,
|
||||
|
@ -621,6 +677,15 @@ asmlinkage long sys_timerfd_gettime(int ufd, struct itimerspec __user *otmr);
|
|||
asmlinkage long sys_eventfd(unsigned int count);
|
||||
asmlinkage long sys_eventfd2(unsigned int count, int flags);
|
||||
asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len);
|
||||
asmlinkage long sys_old_readdir(unsigned int, struct old_linux_dirent __user *, unsigned int);
|
||||
asmlinkage long sys_pselect6(int, fd_set __user *, fd_set __user *,
|
||||
fd_set __user *, struct timespec __user *,
|
||||
void __user *);
|
||||
asmlinkage long sys_ppoll(struct pollfd __user *, unsigned int,
|
||||
struct timespec __user *, const sigset_t __user *,
|
||||
size_t);
|
||||
asmlinkage long sys_pipe2(int __user *, int);
|
||||
asmlinkage long sys_pipe(int __user *);
|
||||
|
||||
int kernel_execve(const char *filename, char *const argv[], char *const envp[]);
|
||||
|
||||
|
|
28
ipc/mqueue.c
28
ipc/mqueue.c
|
@ -650,8 +650,8 @@ static struct file *do_open(struct dentry *dentry, int oflag)
|
|||
return dentry_open(dentry, mqueue_mnt, oflag, cred);
|
||||
}
|
||||
|
||||
asmlinkage long sys_mq_open(const char __user *u_name, int oflag, mode_t mode,
|
||||
struct mq_attr __user *u_attr)
|
||||
SYSCALL_DEFINE4(mq_open, const char __user *, u_name, int, oflag, mode_t, mode,
|
||||
struct mq_attr __user *, u_attr)
|
||||
{
|
||||
struct dentry *dentry;
|
||||
struct file *filp;
|
||||
|
@ -721,7 +721,7 @@ out_putname:
|
|||
return fd;
|
||||
}
|
||||
|
||||
asmlinkage long sys_mq_unlink(const char __user *u_name)
|
||||
SYSCALL_DEFINE1(mq_unlink, const char __user *, u_name)
|
||||
{
|
||||
int err;
|
||||
char *name;
|
||||
|
@ -814,9 +814,9 @@ static inline void pipelined_receive(struct mqueue_inode_info *info)
|
|||
sender->state = STATE_READY;
|
||||
}
|
||||
|
||||
asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *u_msg_ptr,
|
||||
size_t msg_len, unsigned int msg_prio,
|
||||
const struct timespec __user *u_abs_timeout)
|
||||
SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr,
|
||||
size_t, msg_len, unsigned int, msg_prio,
|
||||
const struct timespec __user *, u_abs_timeout)
|
||||
{
|
||||
struct file *filp;
|
||||
struct inode *inode;
|
||||
|
@ -907,9 +907,9 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t sys_mq_timedreceive(mqd_t mqdes, char __user *u_msg_ptr,
|
||||
size_t msg_len, unsigned int __user *u_msg_prio,
|
||||
const struct timespec __user *u_abs_timeout)
|
||||
SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, char __user *, u_msg_ptr,
|
||||
size_t, msg_len, unsigned int __user *, u_msg_prio,
|
||||
const struct timespec __user *, u_abs_timeout)
|
||||
{
|
||||
long timeout;
|
||||
ssize_t ret;
|
||||
|
@ -997,8 +997,8 @@ out:
|
|||
* and he isn't currently owner of notification, will be silently discarded.
|
||||
* It isn't explicitly defined in the POSIX.
|
||||
*/
|
||||
asmlinkage long sys_mq_notify(mqd_t mqdes,
|
||||
const struct sigevent __user *u_notification)
|
||||
SYSCALL_DEFINE2(mq_notify, mqd_t, mqdes,
|
||||
const struct sigevent __user *, u_notification)
|
||||
{
|
||||
int ret;
|
||||
struct file *filp;
|
||||
|
@ -1123,9 +1123,9 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_mq_getsetattr(mqd_t mqdes,
|
||||
const struct mq_attr __user *u_mqstat,
|
||||
struct mq_attr __user *u_omqstat)
|
||||
SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes,
|
||||
const struct mq_attr __user *, u_mqstat,
|
||||
struct mq_attr __user *, u_omqstat)
|
||||
{
|
||||
int ret;
|
||||
struct mq_attr mqstat, omqstat;
|
||||
|
|
12
ipc/msg.c
12
ipc/msg.c
|
@ -309,7 +309,7 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg)
|
|||
return security_msg_queue_associate(msq, msgflg);
|
||||
}
|
||||
|
||||
asmlinkage long sys_msgget(key_t key, int msgflg)
|
||||
SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg)
|
||||
{
|
||||
struct ipc_namespace *ns;
|
||||
struct ipc_ops msg_ops;
|
||||
|
@ -466,7 +466,7 @@ out_up:
|
|||
return err;
|
||||
}
|
||||
|
||||
asmlinkage long sys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf)
|
||||
SYSCALL_DEFINE3(msgctl, int, msqid, int, cmd, struct msqid_ds __user *, buf)
|
||||
{
|
||||
struct msg_queue *msq;
|
||||
int err, version;
|
||||
|
@ -723,8 +723,8 @@ out_free:
|
|||
return err;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_msgsnd(int msqid, struct msgbuf __user *msgp, size_t msgsz, int msgflg)
|
||||
SYSCALL_DEFINE4(msgsnd, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz,
|
||||
int, msgflg)
|
||||
{
|
||||
long mtype;
|
||||
|
||||
|
@ -904,8 +904,8 @@ out_unlock:
|
|||
return msgsz;
|
||||
}
|
||||
|
||||
asmlinkage long sys_msgrcv(int msqid, struct msgbuf __user *msgp, size_t msgsz,
|
||||
long msgtyp, int msgflg)
|
||||
SYSCALL_DEFINE5(msgrcv, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz,
|
||||
long, msgtyp, int, msgflg)
|
||||
{
|
||||
long err, mtype;
|
||||
|
||||
|
|
18
ipc/sem.c
18
ipc/sem.c
|
@ -308,7 +308,7 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_semget(key_t key, int nsems, int semflg)
|
||||
SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
|
||||
{
|
||||
struct ipc_namespace *ns;
|
||||
struct ipc_ops sem_ops;
|
||||
|
@ -887,7 +887,7 @@ out_up:
|
|||
return err;
|
||||
}
|
||||
|
||||
asmlinkage long sys_semctl (int semid, int semnum, int cmd, union semun arg)
|
||||
SYSCALL_DEFINE(semctl)(int semid, int semnum, int cmd, union semun arg)
|
||||
{
|
||||
int err = -EINVAL;
|
||||
int version;
|
||||
|
@ -923,6 +923,13 @@ asmlinkage long sys_semctl (int semid, int semnum, int cmd, union semun arg)
|
|||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_semctl(int semid, int semnum, int cmd, union semun arg)
|
||||
{
|
||||
return SYSC_semctl((int) semid, (int) semnum, (int) cmd, arg);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_semctl, SyS_semctl);
|
||||
#endif
|
||||
|
||||
/* If the task doesn't already have a undo_list, then allocate one
|
||||
* here. We guarantee there is only one thread using this undo list,
|
||||
|
@ -1048,8 +1055,8 @@ out:
|
|||
return un;
|
||||
}
|
||||
|
||||
asmlinkage long sys_semtimedop(int semid, struct sembuf __user *tsops,
|
||||
unsigned nsops, const struct timespec __user *timeout)
|
||||
SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsops,
|
||||
unsigned, nsops, const struct timespec __user *, timeout)
|
||||
{
|
||||
int error = -EINVAL;
|
||||
struct sem_array *sma;
|
||||
|
@ -1225,7 +1232,8 @@ out_free:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_semop (int semid, struct sembuf __user *tsops, unsigned nsops)
|
||||
SYSCALL_DEFINE3(semop, int, semid, struct sembuf __user *, tsops,
|
||||
unsigned, nsops)
|
||||
{
|
||||
return sys_semtimedop(semid, tsops, nsops, NULL);
|
||||
}
|
||||
|
|
|
@ -440,7 +440,7 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_shmget (key_t key, size_t size, int shmflg)
|
||||
SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg)
|
||||
{
|
||||
struct ipc_namespace *ns;
|
||||
struct ipc_ops shm_ops;
|
||||
|
@ -621,7 +621,7 @@ out_up:
|
|||
return err;
|
||||
}
|
||||
|
||||
asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf)
|
||||
SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
|
||||
{
|
||||
struct shmid_kernel *shp;
|
||||
int err, version;
|
||||
|
@ -939,7 +939,7 @@ out_put_dentry:
|
|||
goto out_nattch;
|
||||
}
|
||||
|
||||
asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg)
|
||||
SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg)
|
||||
{
|
||||
unsigned long ret;
|
||||
long err;
|
||||
|
@ -955,7 +955,7 @@ asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg)
|
|||
* detach and kill segment if marked destroyed.
|
||||
* The work is done in shm_close.
|
||||
*/
|
||||
asmlinkage long sys_shmdt(char __user *shmaddr)
|
||||
SYSCALL_DEFINE1(shmdt, char __user *, shmaddr)
|
||||
{
|
||||
struct mm_struct *mm = current->mm;
|
||||
struct vm_area_struct *vma, *next;
|
||||
|
|
|
@ -277,7 +277,7 @@ static int acct_on(char *name)
|
|||
* should be written. If the filename is NULL, accounting will be
|
||||
* shutdown.
|
||||
*/
|
||||
asmlinkage long sys_acct(const char __user *name)
|
||||
SYSCALL_DEFINE1(acct, const char __user *, name)
|
||||
{
|
||||
int error;
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@ static inline int cap_get_target_pid(pid_t pid, kernel_cap_t *pEp,
|
|||
*
|
||||
* Returns 0 on success and < 0 on error.
|
||||
*/
|
||||
asmlinkage long sys_capget(cap_user_header_t header, cap_user_data_t dataptr)
|
||||
SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
|
||||
{
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
|
@ -235,7 +235,7 @@ asmlinkage long sys_capget(cap_user_header_t header, cap_user_data_t dataptr)
|
|||
*
|
||||
* Returns 0 on success and < 0 on error.
|
||||
*/
|
||||
asmlinkage long sys_capset(cap_user_header_t header, const cap_user_data_t data)
|
||||
SYSCALL_DEFINE2(capset, cap_user_header_t, header, const cap_user_data_t, data)
|
||||
{
|
||||
struct __user_cap_data_struct kdata[_KERNEL_CAPABILITY_U32S];
|
||||
unsigned i, tocopy;
|
||||
|
|
|
@ -209,8 +209,7 @@ static int __init proc_execdomains_init(void)
|
|||
module_init(proc_execdomains_init);
|
||||
#endif
|
||||
|
||||
asmlinkage long
|
||||
sys_personality(u_long personality)
|
||||
SYSCALL_DEFINE1(personality, u_long, personality)
|
||||
{
|
||||
u_long old = current->personality;
|
||||
|
||||
|
|
|
@ -1141,7 +1141,7 @@ NORET_TYPE void complete_and_exit(struct completion *comp, long code)
|
|||
|
||||
EXPORT_SYMBOL(complete_and_exit);
|
||||
|
||||
asmlinkage long sys_exit(int error_code)
|
||||
SYSCALL_DEFINE1(exit, int, error_code)
|
||||
{
|
||||
do_exit((error_code&0xff)<<8);
|
||||
}
|
||||
|
@ -1182,9 +1182,11 @@ do_group_exit(int exit_code)
|
|||
* wait4()-ing process will get the correct exit code - even if this
|
||||
* thread is not the thread group leader.
|
||||
*/
|
||||
asmlinkage void sys_exit_group(int error_code)
|
||||
SYSCALL_DEFINE1(exit_group, int, error_code)
|
||||
{
|
||||
do_group_exit((error_code & 0xff) << 8);
|
||||
/* NOTREACHED */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct pid *task_pid_type(struct task_struct *task, enum pid_type type)
|
||||
|
@ -1752,9 +1754,8 @@ end:
|
|||
return retval;
|
||||
}
|
||||
|
||||
asmlinkage long sys_waitid(int which, pid_t upid,
|
||||
struct siginfo __user *infop, int options,
|
||||
struct rusage __user *ru)
|
||||
SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
|
||||
infop, int, options, struct rusage __user *, ru)
|
||||
{
|
||||
struct pid *pid = NULL;
|
||||
enum pid_type type;
|
||||
|
@ -1793,8 +1794,8 @@ asmlinkage long sys_waitid(int which, pid_t upid,
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_wait4(pid_t upid, int __user *stat_addr,
|
||||
int options, struct rusage __user *ru)
|
||||
SYSCALL_DEFINE4(wait4, pid_t, upid, int __user *, stat_addr,
|
||||
int, options, struct rusage __user *, ru)
|
||||
{
|
||||
struct pid *pid = NULL;
|
||||
enum pid_type type;
|
||||
|
@ -1831,7 +1832,7 @@ asmlinkage long sys_wait4(pid_t upid, int __user *stat_addr,
|
|||
* sys_waitpid() remains for compatibility. waitpid() should be
|
||||
* implemented by calling sys_wait4() from libc.a.
|
||||
*/
|
||||
asmlinkage long sys_waitpid(pid_t pid, int __user *stat_addr, int options)
|
||||
SYSCALL_DEFINE3(waitpid, pid_t, pid, int __user *, stat_addr, int, options)
|
||||
{
|
||||
return sys_wait4(pid, stat_addr, options, NULL);
|
||||
}
|
||||
|
|
|
@ -901,7 +901,7 @@ static void copy_flags(unsigned long clone_flags, struct task_struct *p)
|
|||
clear_freeze_flag(p);
|
||||
}
|
||||
|
||||
asmlinkage long sys_set_tid_address(int __user *tidptr)
|
||||
SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr)
|
||||
{
|
||||
current->clear_child_tid = tidptr;
|
||||
|
||||
|
@ -1603,7 +1603,7 @@ static int unshare_fd(unsigned long unshare_flags, struct files_struct **new_fdp
|
|||
* constructed. Here we are modifying the current, active,
|
||||
* task_struct.
|
||||
*/
|
||||
asmlinkage long sys_unshare(unsigned long unshare_flags)
|
||||
SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
|
||||
{
|
||||
int err = 0;
|
||||
struct fs_struct *fs, *new_fs = NULL;
|
||||
|
|
|
@ -1733,9 +1733,8 @@ pi_faulted:
|
|||
* @head: pointer to the list-head
|
||||
* @len: length of the list-head, as userspace expects
|
||||
*/
|
||||
asmlinkage long
|
||||
sys_set_robust_list(struct robust_list_head __user *head,
|
||||
size_t len)
|
||||
SYSCALL_DEFINE2(set_robust_list, struct robust_list_head __user *, head,
|
||||
size_t, len)
|
||||
{
|
||||
if (!futex_cmpxchg_enabled)
|
||||
return -ENOSYS;
|
||||
|
@ -1756,9 +1755,9 @@ sys_set_robust_list(struct robust_list_head __user *head,
|
|||
* @head_ptr: pointer to a list-head pointer, the kernel fills it in
|
||||
* @len_ptr: pointer to a length field, the kernel fills in the header size
|
||||
*/
|
||||
asmlinkage long
|
||||
sys_get_robust_list(int pid, struct robust_list_head __user * __user *head_ptr,
|
||||
size_t __user *len_ptr)
|
||||
SYSCALL_DEFINE3(get_robust_list, int, pid,
|
||||
struct robust_list_head __user * __user *, head_ptr,
|
||||
size_t __user *, len_ptr)
|
||||
{
|
||||
struct robust_list_head __user *head;
|
||||
unsigned long ret;
|
||||
|
@ -1978,9 +1977,9 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
|
|||
}
|
||||
|
||||
|
||||
asmlinkage long sys_futex(u32 __user *uaddr, int op, u32 val,
|
||||
struct timespec __user *utime, u32 __user *uaddr2,
|
||||
u32 val3)
|
||||
SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
|
||||
struct timespec __user *, utime, u32 __user *, uaddr2,
|
||||
u32, val3)
|
||||
{
|
||||
struct timespec ts;
|
||||
ktime_t t, *tp = NULL;
|
||||
|
|
|
@ -1467,8 +1467,8 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp)
|
||||
SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp,
|
||||
struct timespec __user *, rmtp)
|
||||
{
|
||||
struct timespec tu;
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ int do_getitimer(int which, struct itimerval *value)
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getitimer(int which, struct itimerval __user *value)
|
||||
SYSCALL_DEFINE2(getitimer, int, which, struct itimerval __user *, value)
|
||||
{
|
||||
int error = -EFAULT;
|
||||
struct itimerval get_buffer;
|
||||
|
@ -260,9 +260,8 @@ unsigned int alarm_setitimer(unsigned int seconds)
|
|||
return it_old.it_value.tv_sec;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setitimer(int which,
|
||||
struct itimerval __user *value,
|
||||
struct itimerval __user *ovalue)
|
||||
SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value,
|
||||
struct itimerval __user *, ovalue)
|
||||
{
|
||||
struct itimerval set_buffer, get_buffer;
|
||||
int error;
|
||||
|
|
|
@ -934,9 +934,8 @@ struct kimage *kexec_crash_image;
|
|||
|
||||
static DEFINE_MUTEX(kexec_mutex);
|
||||
|
||||
asmlinkage long sys_kexec_load(unsigned long entry, unsigned long nr_segments,
|
||||
struct kexec_segment __user *segments,
|
||||
unsigned long flags)
|
||||
SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments,
|
||||
struct kexec_segment __user *, segments, unsigned long, flags)
|
||||
{
|
||||
struct kimage **dest_image, *image;
|
||||
int result;
|
||||
|
|
|
@ -743,8 +743,8 @@ static void wait_for_zero_refcount(struct module *mod)
|
|||
mutex_lock(&module_mutex);
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_delete_module(const char __user *name_user, unsigned int flags)
|
||||
SYSCALL_DEFINE2(delete_module, const char __user *, name_user,
|
||||
unsigned int, flags)
|
||||
{
|
||||
struct module *mod;
|
||||
char name[MODULE_NAME_LEN];
|
||||
|
@ -2296,10 +2296,8 @@ static noinline struct module *load_module(void __user *umod,
|
|||
}
|
||||
|
||||
/* This is where the real work happens */
|
||||
asmlinkage long
|
||||
sys_init_module(void __user *umod,
|
||||
unsigned long len,
|
||||
const char __user *uargs)
|
||||
SYSCALL_DEFINE3(init_module, void __user *, umod,
|
||||
unsigned long, len, const char __user *, uargs)
|
||||
{
|
||||
struct module *mod;
|
||||
int ret = 0;
|
||||
|
|
|
@ -477,10 +477,9 @@ static void release_posix_timer(struct k_itimer *tmr, int it_id_set)
|
|||
|
||||
/* Create a POSIX.1b interval timer. */
|
||||
|
||||
asmlinkage long
|
||||
sys_timer_create(const clockid_t which_clock,
|
||||
struct sigevent __user *timer_event_spec,
|
||||
timer_t __user * created_timer_id)
|
||||
SYSCALL_DEFINE3(timer_create, const clockid_t, which_clock,
|
||||
struct sigevent __user *, timer_event_spec,
|
||||
timer_t __user *, created_timer_id)
|
||||
{
|
||||
struct k_itimer *new_timer;
|
||||
int error, new_timer_id;
|
||||
|
@ -661,8 +660,8 @@ common_timer_get(struct k_itimer *timr, struct itimerspec *cur_setting)
|
|||
}
|
||||
|
||||
/* Get the time remaining on a POSIX.1b interval timer. */
|
||||
asmlinkage long
|
||||
sys_timer_gettime(timer_t timer_id, struct itimerspec __user *setting)
|
||||
SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
|
||||
struct itimerspec __user *, setting)
|
||||
{
|
||||
struct k_itimer *timr;
|
||||
struct itimerspec cur_setting;
|
||||
|
@ -691,8 +690,7 @@ sys_timer_gettime(timer_t timer_id, struct itimerspec __user *setting)
|
|||
* the call back to do_schedule_next_timer(). So all we need to do is
|
||||
* to pick up the frozen overrun.
|
||||
*/
|
||||
asmlinkage long
|
||||
sys_timer_getoverrun(timer_t timer_id)
|
||||
SYSCALL_DEFINE1(timer_getoverrun, timer_t, timer_id)
|
||||
{
|
||||
struct k_itimer *timr;
|
||||
int overrun;
|
||||
|
@ -760,10 +758,9 @@ common_timer_set(struct k_itimer *timr, int flags,
|
|||
}
|
||||
|
||||
/* Set a POSIX.1b interval timer */
|
||||
asmlinkage long
|
||||
sys_timer_settime(timer_t timer_id, int flags,
|
||||
const struct itimerspec __user *new_setting,
|
||||
struct itimerspec __user *old_setting)
|
||||
SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
|
||||
const struct itimerspec __user *, new_setting,
|
||||
struct itimerspec __user *, old_setting)
|
||||
{
|
||||
struct k_itimer *timr;
|
||||
struct itimerspec new_spec, old_spec;
|
||||
|
@ -816,8 +813,7 @@ static inline int timer_delete_hook(struct k_itimer *timer)
|
|||
}
|
||||
|
||||
/* Delete a POSIX.1b interval timer. */
|
||||
asmlinkage long
|
||||
sys_timer_delete(timer_t timer_id)
|
||||
SYSCALL_DEFINE1(timer_delete, timer_t, timer_id)
|
||||
{
|
||||
struct k_itimer *timer;
|
||||
unsigned long flags;
|
||||
|
@ -903,8 +899,8 @@ int do_posix_clock_nonanosleep(const clockid_t clock, int flags,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(do_posix_clock_nonanosleep);
|
||||
|
||||
asmlinkage long sys_clock_settime(const clockid_t which_clock,
|
||||
const struct timespec __user *tp)
|
||||
SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock,
|
||||
const struct timespec __user *, tp)
|
||||
{
|
||||
struct timespec new_tp;
|
||||
|
||||
|
@ -916,8 +912,8 @@ asmlinkage long sys_clock_settime(const clockid_t which_clock,
|
|||
return CLOCK_DISPATCH(which_clock, clock_set, (which_clock, &new_tp));
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_clock_gettime(const clockid_t which_clock, struct timespec __user *tp)
|
||||
SYSCALL_DEFINE2(clock_gettime, const clockid_t, which_clock,
|
||||
struct timespec __user *,tp)
|
||||
{
|
||||
struct timespec kernel_tp;
|
||||
int error;
|
||||
|
@ -933,8 +929,8 @@ sys_clock_gettime(const clockid_t which_clock, struct timespec __user *tp)
|
|||
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_clock_getres(const clockid_t which_clock, struct timespec __user *tp)
|
||||
SYSCALL_DEFINE2(clock_getres, const clockid_t, which_clock,
|
||||
struct timespec __user *, tp)
|
||||
{
|
||||
struct timespec rtn_tp;
|
||||
int error;
|
||||
|
@ -963,10 +959,9 @@ static int common_nsleep(const clockid_t which_clock, int flags,
|
|||
which_clock);
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_clock_nanosleep(const clockid_t which_clock, int flags,
|
||||
const struct timespec __user *rqtp,
|
||||
struct timespec __user *rmtp)
|
||||
SYSCALL_DEFINE4(clock_nanosleep, const clockid_t, which_clock, int, flags,
|
||||
const struct timespec __user *, rqtp,
|
||||
struct timespec __user *, rmtp)
|
||||
{
|
||||
struct timespec t;
|
||||
|
||||
|
|
|
@ -382,7 +382,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_syslog(int type, char __user *buf, int len)
|
||||
SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len)
|
||||
{
|
||||
return do_syslog(type, buf, len);
|
||||
}
|
||||
|
@ -742,11 +742,6 @@ EXPORT_SYMBOL(vprintk);
|
|||
|
||||
#else
|
||||
|
||||
asmlinkage long sys_syslog(int type, char __user *buf, int len)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static void call_console_drivers(unsigned start, unsigned end)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -574,7 +574,7 @@ struct task_struct *ptrace_get_task_struct(pid_t pid)
|
|||
#define arch_ptrace_attach(child) do { } while (0)
|
||||
#endif
|
||||
|
||||
asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
|
||||
SYSCALL_DEFINE4(ptrace, long, request, long, pid, long, addr, long, data)
|
||||
{
|
||||
struct task_struct *child;
|
||||
long ret;
|
||||
|
|
|
@ -5126,7 +5126,7 @@ int can_nice(const struct task_struct *p, const int nice)
|
|||
* sys_setpriority is a more generic, but much slower function that
|
||||
* does similar things.
|
||||
*/
|
||||
asmlinkage long sys_nice(int increment)
|
||||
SYSCALL_DEFINE1(nice, int, increment)
|
||||
{
|
||||
long nice, retval;
|
||||
|
||||
|
@ -5433,8 +5433,8 @@ do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
|
|||
* @policy: new policy.
|
||||
* @param: structure containing the new RT priority.
|
||||
*/
|
||||
asmlinkage long
|
||||
sys_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
|
||||
SYSCALL_DEFINE3(sched_setscheduler, pid_t, pid, int, policy,
|
||||
struct sched_param __user *, param)
|
||||
{
|
||||
/* negative values for policy are not valid */
|
||||
if (policy < 0)
|
||||
|
@ -5448,7 +5448,7 @@ sys_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
|
|||
* @pid: the pid in question.
|
||||
* @param: structure containing the new RT priority.
|
||||
*/
|
||||
asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param __user *param)
|
||||
SYSCALL_DEFINE2(sched_setparam, pid_t, pid, struct sched_param __user *, param)
|
||||
{
|
||||
return do_sched_setscheduler(pid, -1, param);
|
||||
}
|
||||
|
@ -5457,7 +5457,7 @@ asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param __user *param)
|
|||
* sys_sched_getscheduler - get the policy (scheduling class) of a thread
|
||||
* @pid: the pid in question.
|
||||
*/
|
||||
asmlinkage long sys_sched_getscheduler(pid_t pid)
|
||||
SYSCALL_DEFINE1(sched_getscheduler, pid_t, pid)
|
||||
{
|
||||
struct task_struct *p;
|
||||
int retval;
|
||||
|
@ -5482,7 +5482,7 @@ asmlinkage long sys_sched_getscheduler(pid_t pid)
|
|||
* @pid: the pid in question.
|
||||
* @param: structure containing the RT priority.
|
||||
*/
|
||||
asmlinkage long sys_sched_getparam(pid_t pid, struct sched_param __user *param)
|
||||
SYSCALL_DEFINE2(sched_getparam, pid_t, pid, struct sched_param __user *, param)
|
||||
{
|
||||
struct sched_param lp;
|
||||
struct task_struct *p;
|
||||
|
@ -5600,8 +5600,8 @@ static int get_user_cpu_mask(unsigned long __user *user_mask_ptr, unsigned len,
|
|||
* @len: length in bytes of the bitmask pointed to by user_mask_ptr
|
||||
* @user_mask_ptr: user-space pointer to the new cpu mask
|
||||
*/
|
||||
asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len,
|
||||
unsigned long __user *user_mask_ptr)
|
||||
SYSCALL_DEFINE3(sched_setaffinity, pid_t, pid, unsigned int, len,
|
||||
unsigned long __user *, user_mask_ptr)
|
||||
{
|
||||
cpumask_var_t new_mask;
|
||||
int retval;
|
||||
|
@ -5648,8 +5648,8 @@ out_unlock:
|
|||
* @len: length in bytes of the bitmask pointed to by user_mask_ptr
|
||||
* @user_mask_ptr: user-space pointer to hold the current cpu mask
|
||||
*/
|
||||
asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len,
|
||||
unsigned long __user *user_mask_ptr)
|
||||
SYSCALL_DEFINE3(sched_getaffinity, pid_t, pid, unsigned int, len,
|
||||
unsigned long __user *, user_mask_ptr)
|
||||
{
|
||||
int ret;
|
||||
cpumask_var_t mask;
|
||||
|
@ -5678,7 +5678,7 @@ asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len,
|
|||
* This function yields the current CPU to other tasks. If there are no
|
||||
* other threads running on this CPU then this function will return.
|
||||
*/
|
||||
asmlinkage long sys_sched_yield(void)
|
||||
SYSCALL_DEFINE0(sched_yield)
|
||||
{
|
||||
struct rq *rq = this_rq_lock();
|
||||
|
||||
|
@ -5819,7 +5819,7 @@ long __sched io_schedule_timeout(long timeout)
|
|||
* this syscall returns the maximum rt_priority that can be used
|
||||
* by a given scheduling class.
|
||||
*/
|
||||
asmlinkage long sys_sched_get_priority_max(int policy)
|
||||
SYSCALL_DEFINE1(sched_get_priority_max, int, policy)
|
||||
{
|
||||
int ret = -EINVAL;
|
||||
|
||||
|
@ -5844,7 +5844,7 @@ asmlinkage long sys_sched_get_priority_max(int policy)
|
|||
* this syscall returns the minimum rt_priority that can be used
|
||||
* by a given scheduling class.
|
||||
*/
|
||||
asmlinkage long sys_sched_get_priority_min(int policy)
|
||||
SYSCALL_DEFINE1(sched_get_priority_min, int, policy)
|
||||
{
|
||||
int ret = -EINVAL;
|
||||
|
||||
|
@ -5869,8 +5869,8 @@ asmlinkage long sys_sched_get_priority_min(int policy)
|
|||
* this syscall writes the default timeslice value of a given process
|
||||
* into the user-space timespec buffer. A value of '0' means infinity.
|
||||
*/
|
||||
asmlinkage
|
||||
long sys_sched_rr_get_interval(pid_t pid, struct timespec __user *interval)
|
||||
SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid,
|
||||
struct timespec __user *, interval)
|
||||
{
|
||||
struct task_struct *p;
|
||||
unsigned int time_slice;
|
||||
|
|
|
@ -1961,7 +1961,7 @@ EXPORT_SYMBOL(unblock_all_signals);
|
|||
* System call entry points.
|
||||
*/
|
||||
|
||||
asmlinkage long sys_restart_syscall(void)
|
||||
SYSCALL_DEFINE0(restart_syscall)
|
||||
{
|
||||
struct restart_block *restart = ¤t_thread_info()->restart_block;
|
||||
return restart->fn(restart);
|
||||
|
@ -2014,8 +2014,8 @@ int sigprocmask(int how, sigset_t *set, sigset_t *oldset)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, size_t sigsetsize)
|
||||
SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set,
|
||||
sigset_t __user *, oset, size_t, sigsetsize)
|
||||
{
|
||||
int error = -EINVAL;
|
||||
sigset_t old_set, new_set;
|
||||
|
@ -2074,8 +2074,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize)
|
||||
SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize)
|
||||
{
|
||||
return do_sigpending(set, sigsetsize);
|
||||
}
|
||||
|
@ -2146,11 +2145,9 @@ int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from)
|
|||
|
||||
#endif
|
||||
|
||||
asmlinkage long
|
||||
sys_rt_sigtimedwait(const sigset_t __user *uthese,
|
||||
siginfo_t __user *uinfo,
|
||||
const struct timespec __user *uts,
|
||||
size_t sigsetsize)
|
||||
SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese,
|
||||
siginfo_t __user *, uinfo, const struct timespec __user *, uts,
|
||||
size_t, sigsetsize)
|
||||
{
|
||||
int ret, sig;
|
||||
sigset_t these;
|
||||
|
@ -2223,8 +2220,7 @@ sys_rt_sigtimedwait(const sigset_t __user *uthese,
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_kill(pid_t pid, int sig)
|
||||
SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
|
||||
{
|
||||
struct siginfo info;
|
||||
|
||||
|
@ -2283,7 +2279,7 @@ static int do_tkill(pid_t tgid, pid_t pid, int sig)
|
|||
* exists but it's not belonging to the target process anymore. This
|
||||
* method solves the problem of threads exiting and PIDs getting reused.
|
||||
*/
|
||||
asmlinkage long sys_tgkill(pid_t tgid, pid_t pid, int sig)
|
||||
SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig)
|
||||
{
|
||||
/* This is only valid for single tasks */
|
||||
if (pid <= 0 || tgid <= 0)
|
||||
|
@ -2295,8 +2291,7 @@ asmlinkage long sys_tgkill(pid_t tgid, pid_t pid, int sig)
|
|||
/*
|
||||
* Send a signal to only one task, even if it's a CLONE_THREAD task.
|
||||
*/
|
||||
asmlinkage long
|
||||
sys_tkill(pid_t pid, int sig)
|
||||
SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig)
|
||||
{
|
||||
/* This is only valid for single tasks */
|
||||
if (pid <= 0)
|
||||
|
@ -2305,8 +2300,8 @@ sys_tkill(pid_t pid, int sig)
|
|||
return do_tkill(0, pid, sig);
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t __user *uinfo)
|
||||
SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig,
|
||||
siginfo_t __user *, uinfo)
|
||||
{
|
||||
siginfo_t info;
|
||||
|
||||
|
@ -2434,8 +2429,7 @@ out:
|
|||
|
||||
#ifdef __ARCH_WANT_SYS_SIGPENDING
|
||||
|
||||
asmlinkage long
|
||||
sys_sigpending(old_sigset_t __user *set)
|
||||
SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set)
|
||||
{
|
||||
return do_sigpending(set, sizeof(*set));
|
||||
}
|
||||
|
@ -2446,8 +2440,8 @@ sys_sigpending(old_sigset_t __user *set)
|
|||
/* Some platforms have their own version with special arguments others
|
||||
support only sys_rt_sigprocmask. */
|
||||
|
||||
asmlinkage long
|
||||
sys_sigprocmask(int how, old_sigset_t __user *set, old_sigset_t __user *oset)
|
||||
SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, set,
|
||||
old_sigset_t __user *, oset)
|
||||
{
|
||||
int error;
|
||||
old_sigset_t old_set, new_set;
|
||||
|
@ -2497,11 +2491,10 @@ out:
|
|||
#endif /* __ARCH_WANT_SYS_SIGPROCMASK */
|
||||
|
||||
#ifdef __ARCH_WANT_SYS_RT_SIGACTION
|
||||
asmlinkage long
|
||||
sys_rt_sigaction(int sig,
|
||||
const struct sigaction __user *act,
|
||||
struct sigaction __user *oact,
|
||||
size_t sigsetsize)
|
||||
SYSCALL_DEFINE4(rt_sigaction, int, sig,
|
||||
const struct sigaction __user *, act,
|
||||
struct sigaction __user *, oact,
|
||||
size_t, sigsetsize)
|
||||
{
|
||||
struct k_sigaction new_sa, old_sa;
|
||||
int ret = -EINVAL;
|
||||
|
@ -2531,15 +2524,13 @@ out:
|
|||
/*
|
||||
* For backwards compatibility. Functionality superseded by sigprocmask.
|
||||
*/
|
||||
asmlinkage long
|
||||
sys_sgetmask(void)
|
||||
SYSCALL_DEFINE0(sgetmask)
|
||||
{
|
||||
/* SMP safe */
|
||||
return current->blocked.sig[0];
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_ssetmask(int newmask)
|
||||
SYSCALL_DEFINE1(ssetmask, int, newmask)
|
||||
{
|
||||
int old;
|
||||
|
||||
|
@ -2559,8 +2550,7 @@ sys_ssetmask(int newmask)
|
|||
/*
|
||||
* For backwards compatibility. Functionality superseded by sigaction.
|
||||
*/
|
||||
asmlinkage unsigned long
|
||||
sys_signal(int sig, __sighandler_t handler)
|
||||
SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler)
|
||||
{
|
||||
struct k_sigaction new_sa, old_sa;
|
||||
int ret;
|
||||
|
@ -2577,8 +2567,7 @@ sys_signal(int sig, __sighandler_t handler)
|
|||
|
||||
#ifdef __ARCH_WANT_SYS_PAUSE
|
||||
|
||||
asmlinkage long
|
||||
sys_pause(void)
|
||||
SYSCALL_DEFINE0(pause)
|
||||
{
|
||||
current->state = TASK_INTERRUPTIBLE;
|
||||
schedule();
|
||||
|
@ -2588,7 +2577,7 @@ sys_pause(void)
|
|||
#endif
|
||||
|
||||
#ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND
|
||||
asmlinkage long sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize)
|
||||
SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *, unewset, size_t, sigsetsize)
|
||||
{
|
||||
sigset_t newset;
|
||||
|
||||
|
|
70
kernel/sys.c
70
kernel/sys.c
|
@ -143,7 +143,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setpriority(int which, int who, int niceval)
|
||||
SYSCALL_DEFINE3(setpriority, int, which, int, who, int, niceval)
|
||||
{
|
||||
struct task_struct *g, *p;
|
||||
struct user_struct *user;
|
||||
|
@ -208,7 +208,7 @@ out:
|
|||
* has been offset by 20 (ie it returns 40..1 instead of -20..19)
|
||||
* to stay compatible.
|
||||
*/
|
||||
asmlinkage long sys_getpriority(int which, int who)
|
||||
SYSCALL_DEFINE2(getpriority, int, which, int, who)
|
||||
{
|
||||
struct task_struct *g, *p;
|
||||
struct user_struct *user;
|
||||
|
@ -355,7 +355,8 @@ EXPORT_SYMBOL_GPL(kernel_power_off);
|
|||
*
|
||||
* reboot doesn't sync: do that yourself before calling this.
|
||||
*/
|
||||
asmlinkage long sys_reboot(int magic1, int magic2, unsigned int cmd, void __user * arg)
|
||||
SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
|
||||
void __user *, arg)
|
||||
{
|
||||
char buffer[256];
|
||||
|
||||
|
@ -478,7 +479,7 @@ void ctrl_alt_del(void)
|
|||
* SMP: There are not races, the GIDs are checked only by filesystem
|
||||
* operations (as far as semantic preservation is concerned).
|
||||
*/
|
||||
asmlinkage long sys_setregid(gid_t rgid, gid_t egid)
|
||||
SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
|
||||
{
|
||||
const struct cred *old;
|
||||
struct cred *new;
|
||||
|
@ -529,7 +530,7 @@ error:
|
|||
*
|
||||
* SMP: Same implicit races as above.
|
||||
*/
|
||||
asmlinkage long sys_setgid(gid_t gid)
|
||||
SYSCALL_DEFINE1(setgid, gid_t, gid)
|
||||
{
|
||||
const struct cred *old;
|
||||
struct cred *new;
|
||||
|
@ -597,7 +598,7 @@ static int set_user(struct cred *new)
|
|||
* 100% compatible with BSD. A program which uses just setuid() will be
|
||||
* 100% compatible with POSIX with saved IDs.
|
||||
*/
|
||||
asmlinkage long sys_setreuid(uid_t ruid, uid_t euid)
|
||||
SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid)
|
||||
{
|
||||
const struct cred *old;
|
||||
struct cred *new;
|
||||
|
@ -661,7 +662,7 @@ error:
|
|||
* will allow a root program to temporarily drop privileges and be able to
|
||||
* regain them by swapping the real and effective uid.
|
||||
*/
|
||||
asmlinkage long sys_setuid(uid_t uid)
|
||||
SYSCALL_DEFINE1(setuid, uid_t, uid)
|
||||
{
|
||||
const struct cred *old;
|
||||
struct cred *new;
|
||||
|
@ -705,7 +706,7 @@ error:
|
|||
* This function implements a generic ability to update ruid, euid,
|
||||
* and suid. This allows you to implement the 4.4 compatible seteuid().
|
||||
*/
|
||||
asmlinkage long sys_setresuid(uid_t ruid, uid_t euid, uid_t suid)
|
||||
SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid)
|
||||
{
|
||||
const struct cred *old;
|
||||
struct cred *new;
|
||||
|
@ -756,7 +757,7 @@ error:
|
|||
return retval;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getresuid(uid_t __user *ruid, uid_t __user *euid, uid_t __user *suid)
|
||||
SYSCALL_DEFINE3(getresuid, uid_t __user *, ruid, uid_t __user *, euid, uid_t __user *, suid)
|
||||
{
|
||||
const struct cred *cred = current_cred();
|
||||
int retval;
|
||||
|
@ -771,7 +772,7 @@ asmlinkage long sys_getresuid(uid_t __user *ruid, uid_t __user *euid, uid_t __us
|
|||
/*
|
||||
* Same as above, but for rgid, egid, sgid.
|
||||
*/
|
||||
asmlinkage long sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid)
|
||||
SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
|
||||
{
|
||||
const struct cred *old;
|
||||
struct cred *new;
|
||||
|
@ -814,7 +815,7 @@ error:
|
|||
return retval;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getresgid(gid_t __user *rgid, gid_t __user *egid, gid_t __user *sgid)
|
||||
SYSCALL_DEFINE3(getresgid, gid_t __user *, rgid, gid_t __user *, egid, gid_t __user *, sgid)
|
||||
{
|
||||
const struct cred *cred = current_cred();
|
||||
int retval;
|
||||
|
@ -833,7 +834,7 @@ asmlinkage long sys_getresgid(gid_t __user *rgid, gid_t __user *egid, gid_t __us
|
|||
* whatever uid it wants to). It normally shadows "euid", except when
|
||||
* explicitly set by setfsuid() or for access..
|
||||
*/
|
||||
asmlinkage long sys_setfsuid(uid_t uid)
|
||||
SYSCALL_DEFINE1(setfsuid, uid_t, uid)
|
||||
{
|
||||
const struct cred *old;
|
||||
struct cred *new;
|
||||
|
@ -870,7 +871,7 @@ change_okay:
|
|||
/*
|
||||
* Samma på svenska..
|
||||
*/
|
||||
asmlinkage long sys_setfsgid(gid_t gid)
|
||||
SYSCALL_DEFINE1(setfsgid, gid_t, gid)
|
||||
{
|
||||
const struct cred *old;
|
||||
struct cred *new;
|
||||
|
@ -919,7 +920,7 @@ void do_sys_times(struct tms *tms)
|
|||
tms->tms_cstime = cputime_to_clock_t(cstime);
|
||||
}
|
||||
|
||||
asmlinkage long sys_times(struct tms __user * tbuf)
|
||||
SYSCALL_DEFINE1(times, struct tms __user *, tbuf)
|
||||
{
|
||||
if (tbuf) {
|
||||
struct tms tmp;
|
||||
|
@ -944,7 +945,7 @@ asmlinkage long sys_times(struct tms __user * tbuf)
|
|||
* Auch. Had to add the 'did_exec' flag to conform completely to POSIX.
|
||||
* LBT 04.03.94
|
||||
*/
|
||||
asmlinkage long sys_setpgid(pid_t pid, pid_t pgid)
|
||||
SYSCALL_DEFINE2(setpgid, pid_t, pid, pid_t, pgid)
|
||||
{
|
||||
struct task_struct *p;
|
||||
struct task_struct *group_leader = current->group_leader;
|
||||
|
@ -1015,7 +1016,7 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getpgid(pid_t pid)
|
||||
SYSCALL_DEFINE1(getpgid, pid_t, pid)
|
||||
{
|
||||
struct task_struct *p;
|
||||
struct pid *grp;
|
||||
|
@ -1045,14 +1046,14 @@ out:
|
|||
|
||||
#ifdef __ARCH_WANT_SYS_GETPGRP
|
||||
|
||||
asmlinkage long sys_getpgrp(void)
|
||||
SYSCALL_DEFINE0(getpgrp)
|
||||
{
|
||||
return sys_getpgid(0);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
asmlinkage long sys_getsid(pid_t pid)
|
||||
SYSCALL_DEFINE1(getsid, pid_t, pid)
|
||||
{
|
||||
struct task_struct *p;
|
||||
struct pid *sid;
|
||||
|
@ -1080,7 +1081,7 @@ out:
|
|||
return retval;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setsid(void)
|
||||
SYSCALL_DEFINE0(setsid)
|
||||
{
|
||||
struct task_struct *group_leader = current->group_leader;
|
||||
struct pid *sid = task_pid(group_leader);
|
||||
|
@ -1311,7 +1312,7 @@ int set_current_groups(struct group_info *group_info)
|
|||
|
||||
EXPORT_SYMBOL(set_current_groups);
|
||||
|
||||
asmlinkage long sys_getgroups(int gidsetsize, gid_t __user *grouplist)
|
||||
SYSCALL_DEFINE2(getgroups, int, gidsetsize, gid_t __user *, grouplist)
|
||||
{
|
||||
const struct cred *cred = current_cred();
|
||||
int i;
|
||||
|
@ -1340,7 +1341,7 @@ out:
|
|||
* without another task interfering.
|
||||
*/
|
||||
|
||||
asmlinkage long sys_setgroups(int gidsetsize, gid_t __user *grouplist)
|
||||
SYSCALL_DEFINE2(setgroups, int, gidsetsize, gid_t __user *, grouplist)
|
||||
{
|
||||
struct group_info *group_info;
|
||||
int retval;
|
||||
|
@ -1394,7 +1395,7 @@ EXPORT_SYMBOL(in_egroup_p);
|
|||
|
||||
DECLARE_RWSEM(uts_sem);
|
||||
|
||||
asmlinkage long sys_newuname(struct new_utsname __user * name)
|
||||
SYSCALL_DEFINE1(newuname, struct new_utsname __user *, name)
|
||||
{
|
||||
int errno = 0;
|
||||
|
||||
|
@ -1405,7 +1406,7 @@ asmlinkage long sys_newuname(struct new_utsname __user * name)
|
|||
return errno;
|
||||
}
|
||||
|
||||
asmlinkage long sys_sethostname(char __user *name, int len)
|
||||
SYSCALL_DEFINE2(sethostname, char __user *, name, int, len)
|
||||
{
|
||||
int errno;
|
||||
char tmp[__NEW_UTS_LEN];
|
||||
|
@ -1429,7 +1430,7 @@ asmlinkage long sys_sethostname(char __user *name, int len)
|
|||
|
||||
#ifdef __ARCH_WANT_SYS_GETHOSTNAME
|
||||
|
||||
asmlinkage long sys_gethostname(char __user *name, int len)
|
||||
SYSCALL_DEFINE2(gethostname, char __user *, name, int, len)
|
||||
{
|
||||
int i, errno;
|
||||
struct new_utsname *u;
|
||||
|
@ -1454,7 +1455,7 @@ asmlinkage long sys_gethostname(char __user *name, int len)
|
|||
* Only setdomainname; getdomainname can be implemented by calling
|
||||
* uname()
|
||||
*/
|
||||
asmlinkage long sys_setdomainname(char __user *name, int len)
|
||||
SYSCALL_DEFINE2(setdomainname, char __user *, name, int, len)
|
||||
{
|
||||
int errno;
|
||||
char tmp[__NEW_UTS_LEN];
|
||||
|
@ -1477,7 +1478,7 @@ asmlinkage long sys_setdomainname(char __user *name, int len)
|
|||
return errno;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getrlimit(unsigned int resource, struct rlimit __user *rlim)
|
||||
SYSCALL_DEFINE2(getrlimit, unsigned int, resource, struct rlimit __user *, rlim)
|
||||
{
|
||||
if (resource >= RLIM_NLIMITS)
|
||||
return -EINVAL;
|
||||
|
@ -1496,7 +1497,8 @@ asmlinkage long sys_getrlimit(unsigned int resource, struct rlimit __user *rlim)
|
|||
* Back compatibility for getrlimit. Needed for some apps.
|
||||
*/
|
||||
|
||||
asmlinkage long sys_old_getrlimit(unsigned int resource, struct rlimit __user *rlim)
|
||||
SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource,
|
||||
struct rlimit __user *, rlim)
|
||||
{
|
||||
struct rlimit x;
|
||||
if (resource >= RLIM_NLIMITS)
|
||||
|
@ -1514,7 +1516,7 @@ asmlinkage long sys_old_getrlimit(unsigned int resource, struct rlimit __user *r
|
|||
|
||||
#endif
|
||||
|
||||
asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit __user *rlim)
|
||||
SYSCALL_DEFINE2(setrlimit, unsigned int, resource, struct rlimit __user *, rlim)
|
||||
{
|
||||
struct rlimit new_rlim, *old_rlim;
|
||||
int retval;
|
||||
|
@ -1687,7 +1689,7 @@ int getrusage(struct task_struct *p, int who, struct rusage __user *ru)
|
|||
return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getrusage(int who, struct rusage __user *ru)
|
||||
SYSCALL_DEFINE2(getrusage, int, who, struct rusage __user *, ru)
|
||||
{
|
||||
if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN &&
|
||||
who != RUSAGE_THREAD)
|
||||
|
@ -1695,14 +1697,14 @@ asmlinkage long sys_getrusage(int who, struct rusage __user *ru)
|
|||
return getrusage(current, who, ru);
|
||||
}
|
||||
|
||||
asmlinkage long sys_umask(int mask)
|
||||
SYSCALL_DEFINE1(umask, int, mask)
|
||||
{
|
||||
mask = xchg(¤t->fs->umask, mask & S_IRWXUGO);
|
||||
return mask;
|
||||
}
|
||||
|
||||
asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3,
|
||||
unsigned long arg4, unsigned long arg5)
|
||||
SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
|
||||
unsigned long, arg4, unsigned long, arg5)
|
||||
{
|
||||
struct task_struct *me = current;
|
||||
unsigned char comm[sizeof(me->comm)];
|
||||
|
@ -1815,8 +1817,8 @@ asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3,
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getcpu(unsigned __user *cpup, unsigned __user *nodep,
|
||||
struct getcpu_cache __user *unused)
|
||||
SYSCALL_DEFINE3(getcpu, unsigned __user *, cpup, unsigned __user *, nodep,
|
||||
struct getcpu_cache __user *, unused)
|
||||
{
|
||||
int err = 0;
|
||||
int cpu = raw_smp_processor_id();
|
||||
|
|
|
@ -131,6 +131,7 @@ cond_syscall(sys_io_destroy);
|
|||
cond_syscall(sys_io_submit);
|
||||
cond_syscall(sys_io_cancel);
|
||||
cond_syscall(sys_io_getevents);
|
||||
cond_syscall(sys_syslog);
|
||||
|
||||
/* arch-specific weak syscall entries */
|
||||
cond_syscall(sys_pciconfig_read);
|
||||
|
|
|
@ -1688,7 +1688,7 @@ int do_sysctl(int __user *name, int nlen, void __user *oldval, size_t __user *ol
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_sysctl(struct __sysctl_args __user *args)
|
||||
SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
|
||||
{
|
||||
struct __sysctl_args tmp;
|
||||
int error;
|
||||
|
@ -2989,7 +2989,7 @@ int sysctl_ms_jiffies(struct ctl_table *table,
|
|||
#else /* CONFIG_SYSCTL_SYSCALL */
|
||||
|
||||
|
||||
asmlinkage long sys_sysctl(struct __sysctl_args __user *args)
|
||||
SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
|
||||
{
|
||||
struct __sysctl_args tmp;
|
||||
int error;
|
||||
|
|
|
@ -60,7 +60,7 @@ EXPORT_SYMBOL(sys_tz);
|
|||
* why not move it into the appropriate arch directory (for those
|
||||
* architectures that need it).
|
||||
*/
|
||||
asmlinkage long sys_time(time_t __user * tloc)
|
||||
SYSCALL_DEFINE1(time, time_t __user *, tloc)
|
||||
{
|
||||
time_t i = get_seconds();
|
||||
|
||||
|
@ -79,7 +79,7 @@ asmlinkage long sys_time(time_t __user * tloc)
|
|||
* architectures that need it).
|
||||
*/
|
||||
|
||||
asmlinkage long sys_stime(time_t __user *tptr)
|
||||
SYSCALL_DEFINE1(stime, time_t __user *, tptr)
|
||||
{
|
||||
struct timespec tv;
|
||||
int err;
|
||||
|
@ -99,8 +99,8 @@ asmlinkage long sys_stime(time_t __user *tptr)
|
|||
|
||||
#endif /* __ARCH_WANT_SYS_TIME */
|
||||
|
||||
asmlinkage long sys_gettimeofday(struct timeval __user *tv,
|
||||
struct timezone __user *tz)
|
||||
SYSCALL_DEFINE2(gettimeofday, struct timeval __user *, tv,
|
||||
struct timezone __user *, tz)
|
||||
{
|
||||
if (likely(tv != NULL)) {
|
||||
struct timeval ktv;
|
||||
|
@ -184,8 +184,8 @@ int do_sys_settimeofday(struct timespec *tv, struct timezone *tz)
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_settimeofday(struct timeval __user *tv,
|
||||
struct timezone __user *tz)
|
||||
SYSCALL_DEFINE2(settimeofday, struct timeval __user *, tv,
|
||||
struct timezone __user *, tz)
|
||||
{
|
||||
struct timeval user_tv;
|
||||
struct timespec new_ts;
|
||||
|
@ -205,7 +205,7 @@ asmlinkage long sys_settimeofday(struct timeval __user *tv,
|
|||
return do_sys_settimeofday(tv ? &new_ts : NULL, tz ? &new_tz : NULL);
|
||||
}
|
||||
|
||||
asmlinkage long sys_adjtimex(struct timex __user *txc_p)
|
||||
SYSCALL_DEFINE1(adjtimex, struct timex __user *, txc_p)
|
||||
{
|
||||
struct timex txc; /* Local copy of parameter */
|
||||
int ret;
|
||||
|
|
|
@ -1129,7 +1129,7 @@ void do_timer(unsigned long ticks)
|
|||
* For backwards compatibility? This can be done in libc so Alpha
|
||||
* and all newer ports shouldn't need it.
|
||||
*/
|
||||
asmlinkage unsigned long sys_alarm(unsigned int seconds)
|
||||
SYSCALL_DEFINE1(alarm, unsigned int, seconds)
|
||||
{
|
||||
return alarm_setitimer(seconds);
|
||||
}
|
||||
|
@ -1152,7 +1152,7 @@ asmlinkage unsigned long sys_alarm(unsigned int seconds)
|
|||
*
|
||||
* This is SMP safe as current->tgid does not change.
|
||||
*/
|
||||
asmlinkage long sys_getpid(void)
|
||||
SYSCALL_DEFINE0(getpid)
|
||||
{
|
||||
return task_tgid_vnr(current);
|
||||
}
|
||||
|
@ -1163,7 +1163,7 @@ asmlinkage long sys_getpid(void)
|
|||
* value of ->real_parent under rcu_read_lock(), see
|
||||
* release_task()->call_rcu(delayed_put_task_struct).
|
||||
*/
|
||||
asmlinkage long sys_getppid(void)
|
||||
SYSCALL_DEFINE0(getppid)
|
||||
{
|
||||
int pid;
|
||||
|
||||
|
@ -1174,25 +1174,25 @@ asmlinkage long sys_getppid(void)
|
|||
return pid;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getuid(void)
|
||||
SYSCALL_DEFINE0(getuid)
|
||||
{
|
||||
/* Only we change this so SMP safe */
|
||||
return current_uid();
|
||||
}
|
||||
|
||||
asmlinkage long sys_geteuid(void)
|
||||
SYSCALL_DEFINE0(geteuid)
|
||||
{
|
||||
/* Only we change this so SMP safe */
|
||||
return current_euid();
|
||||
}
|
||||
|
||||
asmlinkage long sys_getgid(void)
|
||||
SYSCALL_DEFINE0(getgid)
|
||||
{
|
||||
/* Only we change this so SMP safe */
|
||||
return current_gid();
|
||||
}
|
||||
|
||||
asmlinkage long sys_getegid(void)
|
||||
SYSCALL_DEFINE0(getegid)
|
||||
{
|
||||
/* Only we change this so SMP safe */
|
||||
return current_egid();
|
||||
|
@ -1308,7 +1308,7 @@ signed long __sched schedule_timeout_uninterruptible(signed long timeout)
|
|||
EXPORT_SYMBOL(schedule_timeout_uninterruptible);
|
||||
|
||||
/* Thread ID - the internal kernel "pid" */
|
||||
asmlinkage long sys_gettid(void)
|
||||
SYSCALL_DEFINE0(gettid)
|
||||
{
|
||||
return task_pid_vnr(current);
|
||||
}
|
||||
|
@ -1400,7 +1400,7 @@ out:
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_sysinfo(struct sysinfo __user *info)
|
||||
SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)
|
||||
{
|
||||
struct sysinfo val;
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
asmlinkage long sys_chown16(const char __user * filename, old_uid_t user, old_gid_t group)
|
||||
SYSCALL_DEFINE3(chown16, const char __user *, filename, old_uid_t, user, old_gid_t, group)
|
||||
{
|
||||
long ret = sys_chown(filename, low2highuid(user), low2highgid(group));
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
|
@ -25,7 +25,7 @@ asmlinkage long sys_chown16(const char __user * filename, old_uid_t user, old_gi
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_lchown16(const char __user * filename, old_uid_t user, old_gid_t group)
|
||||
SYSCALL_DEFINE3(lchown16, const char __user *, filename, old_uid_t, user, old_gid_t, group)
|
||||
{
|
||||
long ret = sys_lchown(filename, low2highuid(user), low2highgid(group));
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
|
@ -33,7 +33,7 @@ asmlinkage long sys_lchown16(const char __user * filename, old_uid_t user, old_g
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group)
|
||||
SYSCALL_DEFINE3(fchown16, unsigned int, fd, old_uid_t, user, old_gid_t, group)
|
||||
{
|
||||
long ret = sys_fchown(fd, low2highuid(user), low2highgid(group));
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
|
@ -41,7 +41,7 @@ asmlinkage long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setregid16(old_gid_t rgid, old_gid_t egid)
|
||||
SYSCALL_DEFINE2(setregid16, old_gid_t, rgid, old_gid_t, egid)
|
||||
{
|
||||
long ret = sys_setregid(low2highgid(rgid), low2highgid(egid));
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
|
@ -49,7 +49,7 @@ asmlinkage long sys_setregid16(old_gid_t rgid, old_gid_t egid)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setgid16(old_gid_t gid)
|
||||
SYSCALL_DEFINE1(setgid16, old_gid_t, gid)
|
||||
{
|
||||
long ret = sys_setgid(low2highgid(gid));
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
|
@ -57,7 +57,7 @@ asmlinkage long sys_setgid16(old_gid_t gid)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setreuid16(old_uid_t ruid, old_uid_t euid)
|
||||
SYSCALL_DEFINE2(setreuid16, old_uid_t, ruid, old_uid_t, euid)
|
||||
{
|
||||
long ret = sys_setreuid(low2highuid(ruid), low2highuid(euid));
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
|
@ -65,7 +65,7 @@ asmlinkage long sys_setreuid16(old_uid_t ruid, old_uid_t euid)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setuid16(old_uid_t uid)
|
||||
SYSCALL_DEFINE1(setuid16, old_uid_t, uid)
|
||||
{
|
||||
long ret = sys_setuid(low2highuid(uid));
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
|
@ -73,7 +73,7 @@ asmlinkage long sys_setuid16(old_uid_t uid)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid)
|
||||
SYSCALL_DEFINE3(setresuid16, old_uid_t, ruid, old_uid_t, euid, old_uid_t, suid)
|
||||
{
|
||||
long ret = sys_setresuid(low2highuid(ruid), low2highuid(euid),
|
||||
low2highuid(suid));
|
||||
|
@ -82,7 +82,7 @@ asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid, old_uid_t __user *suid)
|
||||
SYSCALL_DEFINE3(getresuid16, old_uid_t __user *, ruid, old_uid_t __user *, euid, old_uid_t __user *, suid)
|
||||
{
|
||||
const struct cred *cred = current_cred();
|
||||
int retval;
|
||||
|
@ -94,7 +94,7 @@ asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid,
|
|||
return retval;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid)
|
||||
SYSCALL_DEFINE3(setresgid16, old_gid_t, rgid, old_gid_t, egid, old_gid_t, sgid)
|
||||
{
|
||||
long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid),
|
||||
low2highgid(sgid));
|
||||
|
@ -103,7 +103,8 @@ asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid, old_gid_t __user *sgid)
|
||||
|
||||
SYSCALL_DEFINE3(getresgid16, old_gid_t __user *, rgid, old_gid_t __user *, egid, old_gid_t __user *, sgid)
|
||||
{
|
||||
const struct cred *cred = current_cred();
|
||||
int retval;
|
||||
|
@ -115,7 +116,7 @@ asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid,
|
|||
return retval;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setfsuid16(old_uid_t uid)
|
||||
SYSCALL_DEFINE1(setfsuid16, old_uid_t, uid)
|
||||
{
|
||||
long ret = sys_setfsuid(low2highuid(uid));
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
|
@ -123,7 +124,7 @@ asmlinkage long sys_setfsuid16(old_uid_t uid)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setfsgid16(old_gid_t gid)
|
||||
SYSCALL_DEFINE1(setfsgid16, old_gid_t, gid)
|
||||
{
|
||||
long ret = sys_setfsgid(low2highgid(gid));
|
||||
/* avoid REGPARM breakage on x86: */
|
||||
|
@ -161,7 +162,7 @@ static int groups16_from_user(struct group_info *group_info,
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist)
|
||||
SYSCALL_DEFINE2(getgroups16, int, gidsetsize, old_gid_t __user *, grouplist)
|
||||
{
|
||||
const struct cred *cred = current_cred();
|
||||
int i;
|
||||
|
@ -184,7 +185,7 @@ out:
|
|||
return i;
|
||||
}
|
||||
|
||||
asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist)
|
||||
SYSCALL_DEFINE2(setgroups16, int, gidsetsize, old_gid_t __user *, grouplist)
|
||||
{
|
||||
struct group_info *group_info;
|
||||
int retval;
|
||||
|
@ -209,22 +210,22 @@ asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist)
|
|||
return retval;
|
||||
}
|
||||
|
||||
asmlinkage long sys_getuid16(void)
|
||||
SYSCALL_DEFINE0(getuid16)
|
||||
{
|
||||
return high2lowuid(current_uid());
|
||||
}
|
||||
|
||||
asmlinkage long sys_geteuid16(void)
|
||||
SYSCALL_DEFINE0(geteuid16)
|
||||
{
|
||||
return high2lowuid(current_euid());
|
||||
}
|
||||
|
||||
asmlinkage long sys_getgid16(void)
|
||||
SYSCALL_DEFINE0(getgid16)
|
||||
{
|
||||
return high2lowgid(current_gid());
|
||||
}
|
||||
|
||||
asmlinkage long sys_getegid16(void)
|
||||
SYSCALL_DEFINE0(getegid16)
|
||||
{
|
||||
return high2lowgid(current_egid());
|
||||
}
|
||||
|
|
18
mm/fadvise.c
18
mm/fadvise.c
|
@ -24,7 +24,7 @@
|
|||
* POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could
|
||||
* deactivate the pages and clear PG_Referenced.
|
||||
*/
|
||||
asmlinkage long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice)
|
||||
SYSCALL_DEFINE(fadvise64_64)(int fd, loff_t offset, loff_t len, int advice)
|
||||
{
|
||||
struct file *file = fget(fd);
|
||||
struct address_space *mapping;
|
||||
|
@ -126,12 +126,26 @@ out:
|
|||
fput(file);
|
||||
return ret;
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_fadvise64_64(long fd, loff_t offset, loff_t len, long advice)
|
||||
{
|
||||
return SYSC_fadvise64_64((int) fd, offset, len, (int) advice);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_fadvise64_64, SyS_fadvise64_64);
|
||||
#endif
|
||||
|
||||
#ifdef __ARCH_WANT_SYS_FADVISE64
|
||||
|
||||
asmlinkage long sys_fadvise64(int fd, loff_t offset, size_t len, int advice)
|
||||
SYSCALL_DEFINE(fadvise64)(int fd, loff_t offset, size_t len, int advice)
|
||||
{
|
||||
return sys_fadvise64_64(fd, offset, len, advice);
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_fadvise64(long fd, loff_t offset, long len, long advice)
|
||||
{
|
||||
return SYSC_fadvise64((int) fd, offset, (size_t)len, (int)advice);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_fadvise64, SyS_fadvise64);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1374,7 +1374,7 @@ do_readahead(struct address_space *mapping, struct file *filp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count)
|
||||
SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count)
|
||||
{
|
||||
ssize_t ret;
|
||||
struct file *file;
|
||||
|
@ -1393,6 +1393,13 @@ asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count)
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_readahead(long fd, loff_t offset, long count)
|
||||
{
|
||||
return SYSC_readahead((int) fd, offset, (size_t) count);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_readahead, SyS_readahead);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
/**
|
||||
|
|
|
@ -120,8 +120,8 @@ static int populate_range(struct mm_struct *mm, struct vm_area_struct *vma,
|
|||
* and the vma's default protection is used. Arbitrary protections
|
||||
* might be implemented in the future.
|
||||
*/
|
||||
asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size,
|
||||
unsigned long prot, unsigned long pgoff, unsigned long flags)
|
||||
SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
||||
unsigned long, prot, unsigned long, pgoff, unsigned long, flags)
|
||||
{
|
||||
struct mm_struct *mm = current->mm;
|
||||
struct address_space *mapping;
|
||||
|
|
|
@ -281,7 +281,7 @@ madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev,
|
|||
* -EBADF - map exists, but area maps something that isn't a file.
|
||||
* -EAGAIN - a kernel resource was temporarily unavailable.
|
||||
*/
|
||||
asmlinkage long sys_madvise(unsigned long start, size_t len_in, int behavior)
|
||||
SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
|
||||
{
|
||||
unsigned long end, tmp;
|
||||
struct vm_area_struct * vma, *prev;
|
||||
|
|
|
@ -1068,10 +1068,9 @@ static int copy_nodes_to_user(unsigned long __user *mask, unsigned long maxnode,
|
|||
return copy_to_user(mask, nodes_addr(*nodes), copy) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_mbind(unsigned long start, unsigned long len,
|
||||
unsigned long mode,
|
||||
unsigned long __user *nmask, unsigned long maxnode,
|
||||
unsigned flags)
|
||||
SYSCALL_DEFINE6(mbind, unsigned long, start, unsigned long, len,
|
||||
unsigned long, mode, unsigned long __user *, nmask,
|
||||
unsigned long, maxnode, unsigned, flags)
|
||||
{
|
||||
nodemask_t nodes;
|
||||
int err;
|
||||
|
@ -1091,8 +1090,8 @@ asmlinkage long sys_mbind(unsigned long start, unsigned long len,
|
|||
}
|
||||
|
||||
/* Set the process memory policy */
|
||||
asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask,
|
||||
unsigned long maxnode)
|
||||
SYSCALL_DEFINE3(set_mempolicy, int, mode, unsigned long __user *, nmask,
|
||||
unsigned long, maxnode)
|
||||
{
|
||||
int err;
|
||||
nodemask_t nodes;
|
||||
|
@ -1110,9 +1109,9 @@ asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask,
|
|||
return do_set_mempolicy(mode, flags, &nodes);
|
||||
}
|
||||
|
||||
asmlinkage long sys_migrate_pages(pid_t pid, unsigned long maxnode,
|
||||
const unsigned long __user *old_nodes,
|
||||
const unsigned long __user *new_nodes)
|
||||
SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
|
||||
const unsigned long __user *, old_nodes,
|
||||
const unsigned long __user *, new_nodes)
|
||||
{
|
||||
const struct cred *cred = current_cred(), *tcred;
|
||||
struct mm_struct *mm;
|
||||
|
@ -1185,10 +1184,9 @@ out:
|
|||
|
||||
|
||||
/* Retrieve NUMA policy */
|
||||
asmlinkage long sys_get_mempolicy(int __user *policy,
|
||||
unsigned long __user *nmask,
|
||||
unsigned long maxnode,
|
||||
unsigned long addr, unsigned long flags)
|
||||
SYSCALL_DEFINE5(get_mempolicy, int __user *, policy,
|
||||
unsigned long __user *, nmask, unsigned long, maxnode,
|
||||
unsigned long, addr, unsigned long, flags)
|
||||
{
|
||||
int err;
|
||||
int uninitialized_var(pval);
|
||||
|
|
|
@ -1055,10 +1055,10 @@ out:
|
|||
* Move a list of pages in the address space of the currently executing
|
||||
* process.
|
||||
*/
|
||||
asmlinkage long sys_move_pages(pid_t pid, unsigned long nr_pages,
|
||||
const void __user * __user *pages,
|
||||
const int __user *nodes,
|
||||
int __user *status, int flags)
|
||||
SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
|
||||
const void __user * __user *, pages,
|
||||
const int __user *, nodes,
|
||||
int __user *, status, int, flags)
|
||||
{
|
||||
const struct cred *cred = current_cred(), *tcred;
|
||||
struct task_struct *task;
|
||||
|
|
|
@ -177,8 +177,8 @@ none_mapped:
|
|||
* mapped
|
||||
* -EAGAIN - A kernel resource was temporarily unavailable.
|
||||
*/
|
||||
asmlinkage long sys_mincore(unsigned long start, size_t len,
|
||||
unsigned char __user * vec)
|
||||
SYSCALL_DEFINE3(mincore, unsigned long, start, size_t, len,
|
||||
unsigned char __user *, vec)
|
||||
{
|
||||
long retval;
|
||||
unsigned long pages;
|
||||
|
|
|
@ -530,7 +530,7 @@ static int do_mlock(unsigned long start, size_t len, int on)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_mlock(unsigned long start, size_t len)
|
||||
SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len)
|
||||
{
|
||||
unsigned long locked;
|
||||
unsigned long lock_limit;
|
||||
|
@ -558,7 +558,7 @@ asmlinkage long sys_mlock(unsigned long start, size_t len)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys_munlock(unsigned long start, size_t len)
|
||||
SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
@ -595,7 +595,7 @@ out:
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys_mlockall(int flags)
|
||||
SYSCALL_DEFINE1(mlockall, int, flags)
|
||||
{
|
||||
unsigned long lock_limit;
|
||||
int ret = -EINVAL;
|
||||
|
@ -623,7 +623,7 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys_munlockall(void)
|
||||
SYSCALL_DEFINE0(munlockall)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче