diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2013-03-03 12:49:06 -0500 | 
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-03-03 22:59:36 -0500 | 
| commit | 8d2d5c4a251924e4f70657e96a2a3f87647544f0 (patch) | |
| tree | ada470f9738d49bfc2d55cb01f8c62188ce8ae12 | |
| parent | 35280bd4a3fa841897e2638437607fdec6c34f31 (diff) | |
| download | olio-linux-3.10-8d2d5c4a251924e4f70657e96a2a3f87647544f0.tar.xz olio-linux-3.10-8d2d5c4a251924e4f70657e96a2a3f87647544f0.zip | |
switch getrusage() to COMPAT_SYSCALL_DEFINE
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | arch/s390/kernel/compat_wrapper.S | 5 | ||||
| -rw-r--r-- | arch/s390/kernel/syscalls.S | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/sys32.S | 1 | ||||
| -rw-r--r-- | arch/sparc/kernel/systbls_64.S | 2 | ||||
| -rw-r--r-- | kernel/compat.c | 19 | ||||
| -rw-r--r-- | kernel/sys.c | 14 | 
6 files changed, 16 insertions, 27 deletions
| diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 52bea71d93e..cee31d7910c 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S @@ -258,11 +258,6 @@ ENTRY(sys32_mmap2_wrapper)  	llgtr	%r2,%r2			# struct mmap_arg_struct_emu31 *  	jg	sys32_mmap2			# branch to system call -ENTRY(compat_sys_getrusage_wrapper) -	lgfr	%r2,%r2			# int -	llgtr	%r3,%r3			# struct rusage_emu31 * -	jg	compat_sys_getrusage	# branch to system call -  ENTRY(compat_sys_gettimeofday_wrapper)  	llgtr	%r2,%r2			# struct timeval_emu31 *  	llgtr	%r3,%r3			# struct timezone * diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index 63d6b434319..e9c8a88c748 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S @@ -85,7 +85,7 @@ SYSCALL(sys_sigpending,sys_sigpending,compat_sys_sigpending_wrapper)  SYSCALL(sys_sethostname,sys_sethostname,sys32_sethostname_wrapper)  SYSCALL(sys_setrlimit,sys_setrlimit,compat_sys_setrlimit_wrapper)	/* 75 */  SYSCALL(sys_old_getrlimit,sys_getrlimit,compat_sys_old_getrlimit_wrapper) -SYSCALL(sys_getrusage,sys_getrusage,compat_sys_getrusage_wrapper) +SYSCALL(sys_getrusage,sys_getrusage,compat_sys_getrusage)  SYSCALL(sys_gettimeofday,sys_gettimeofday,compat_sys_gettimeofday_wrapper)  SYSCALL(sys_settimeofday,sys_settimeofday,compat_sys_settimeofday_wrapper)  SYSCALL(sys_getgroups16,sys_ni_syscall,sys32_getgroups16_wrapper)	/* 80 old getgroups16 syscall */ diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S index 6c65d69c663..0b4030aff2f 100644 --- a/arch/sparc/kernel/sys32.S +++ b/arch/sparc/kernel/sys32.S @@ -36,7 +36,6 @@ STUB:	sra	REG1, 0, REG1; \  	jmpl	%g1 + %lo(SYSCALL), %g0; \  	sra	REG3, 0, REG3 -SIGN1(sys32_getrusage, compat_sys_getrusage, %o0)  SIGN1(sys32_readahead, compat_sys_readahead, %o0)  SIGN2(sys32_fadvise64, compat_sys_fadvise64, %o0, %o4)  SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5) diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S index a1444d0d08e..423a4e2a77f 100644 --- a/arch/sparc/kernel/systbls_64.S +++ b/arch/sparc/kernel/systbls_64.S @@ -41,7 +41,7 @@ sys_call_table32:  /*100*/ .word sys_getpriority, sys32_rt_sigreturn, compat_sys_rt_sigaction, compat_sys_rt_sigprocmask, compat_sys_rt_sigpending  	.word compat_sys_rt_sigtimedwait, compat_sys_rt_sigqueueinfo, compat_sys_rt_sigsuspend, sys_setresuid, sys_getresuid  /*110*/	.word sys_setresgid, sys_getresgid, sys_setregid, sys_nis_syscall, sys_nis_syscall -	.word sys_getgroups, compat_sys_gettimeofday, sys32_getrusage, sys_nis_syscall, sys_getcwd +	.word sys_getgroups, compat_sys_gettimeofday, compat_sys_getrusage, sys_nis_syscall, sys_getcwd  /*120*/	.word compat_sys_readv, compat_sys_writev, compat_sys_settimeofday, sys_fchown16, sys_fchmod  	.word sys_nis_syscall, sys_setreuid16, sys_setregid16, sys_rename, compat_sys_truncate  /*130*/	.word compat_sys_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall diff --git a/kernel/compat.c b/kernel/compat.c index 19971d8c729..c5620d6435e 100644 --- a/kernel/compat.c +++ b/kernel/compat.c @@ -516,25 +516,6 @@ int put_compat_rusage(const struct rusage *r, struct compat_rusage __user *ru)  	return 0;  } -asmlinkage long compat_sys_getrusage(int who, struct compat_rusage __user *ru) -{ -	struct rusage r; -	int ret; -	mm_segment_t old_fs = get_fs(); - -	set_fs(KERNEL_DS); -	ret = sys_getrusage(who, (struct rusage __user *) &r); -	set_fs(old_fs); - -	if (ret) -		return ret; - -	if (put_compat_rusage(&r, ru)) -		return -EFAULT; - -	return 0; -} -  COMPAT_SYSCALL_DEFINE4(wait4,  	compat_pid_t, pid,  	compat_uint_t __user *, stat_addr, diff --git a/kernel/sys.c b/kernel/sys.c index 81f56445fba..fd2b5259ad7 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1784,6 +1784,20 @@ SYSCALL_DEFINE2(getrusage, int, who, struct rusage __user *, ru)  	return getrusage(current, who, ru);  } +#ifdef CONFIG_COMPAT +COMPAT_SYSCALL_DEFINE2(getrusage, int, who, struct compat_rusage __user *, ru) +{ +	struct rusage r; + +	if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN && +	    who != RUSAGE_THREAD) +		return -EINVAL; + +	k_getrusage(current, who, &r); +	return put_compat_rusage(&r, ru); +} +#endif +  SYSCALL_DEFINE1(umask, int, mask)  {  	mask = xchg(¤t->fs->umask, mask & S_IRWXUGO); |