diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2013-03-05 20:10:59 -0500 | 
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-05-09 13:46:38 -0400 | 
| commit | 91c2e0bcae72a3086c698b5de2b950b885abb0e6 (patch) | |
| tree | 89f738ca8f9519f0fd3b22dd6cfb3dc69d98cfab | |
| parent | 5522ddb3fc0dfd4a503c8278eafd88c9f2d3fada (diff) | |
| download | olio-linux-3.10-91c2e0bcae72a3086c698b5de2b950b885abb0e6.tar.xz olio-linux-3.10-91c2e0bcae72a3086c698b5de2b950b885abb0e6.zip | |
unify compat fanotify_mark(2), switch to COMPAT_SYSCALL_DEFINE
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | arch/arm64/include/asm/unistd32.h | 2 | ||||
| -rw-r--r-- | arch/arm64/kernel/sys32.S | 7 | ||||
| -rw-r--r-- | arch/mips/kernel/linux32.c | 7 | ||||
| -rw-r--r-- | arch/mips/kernel/scall64-o32.S | 2 | ||||
| -rw-r--r-- | arch/parisc/kernel/sys_parisc32.c | 8 | ||||
| -rw-r--r-- | arch/powerpc/kernel/sys_ppc32.c | 8 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_wrapper.S | 9 | ||||
| -rw-r--r-- | arch/s390/kernel/syscalls.S | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/sys32.S | 9 | ||||
| -rw-r--r-- | arch/sparc/kernel/systbls_64.S | 2 | ||||
| -rw-r--r-- | arch/x86/ia32/sys_ia32.c | 9 | ||||
| -rw-r--r-- | arch/x86/include/asm/sys_ia32.h | 3 | ||||
| -rw-r--r-- | arch/x86/syscalls/syscall_32.tbl | 2 | ||||
| -rw-r--r-- | fs/notify/fanotify/fanotify_user.c | 17 | ||||
| -rw-r--r-- | include/linux/compat.h | 2 | ||||
| -rw-r--r-- | kernel/sys_ni.c | 1 | 
16 files changed, 25 insertions, 65 deletions
| diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h index 12f22492df4..58125bf008d 100644 --- a/arch/arm64/include/asm/unistd32.h +++ b/arch/arm64/include/asm/unistd32.h @@ -389,7 +389,7 @@ __SYSCALL(364, sys_perf_event_open)  __SYSCALL(365, compat_sys_recvmmsg)  __SYSCALL(366, sys_accept4)  __SYSCALL(367, sys_fanotify_init) -__SYSCALL(368, compat_sys_fanotify_mark_wrapper) +__SYSCALL(368, compat_sys_fanotify_mark)  __SYSCALL(369, sys_prlimit64)  __SYSCALL(370, sys_name_to_handle_at)  __SYSCALL(371, compat_sys_open_by_handle_at) diff --git a/arch/arm64/kernel/sys32.S b/arch/arm64/kernel/sys32.S index db01aa978c4..a1b19ed7467 100644 --- a/arch/arm64/kernel/sys32.S +++ b/arch/arm64/kernel/sys32.S @@ -104,13 +104,6 @@ compat_sys_fallocate_wrapper:  	b	sys_fallocate  ENDPROC(compat_sys_fallocate_wrapper) -compat_sys_fanotify_mark_wrapper: -	orr	x2, x2, x3, lsl #32 -	mov	w3, w4 -	mov	w4, w5 -	b	sys_fanotify_mark -ENDPROC(compat_sys_fanotify_mark_wrapper) -  #undef __SYSCALL  #define __SYSCALL(x, y)		.quad	y	// x diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c index d1d576b765f..0b29646bcee 100644 --- a/arch/mips/kernel/linux32.c +++ b/arch/mips/kernel/linux32.c @@ -165,10 +165,3 @@ asmlinkage long sys32_fallocate(int fd, int mode, unsigned offset_a2,  	return sys_fallocate(fd, mode, merge_64(offset_a2, offset_a3),  			     merge_64(len_a4, len_a5));  } - -SYSCALL_DEFINE6(32_fanotify_mark, int, fanotify_fd, unsigned int, flags, -		u64, a3, u64, a4, int, dfd, const char	__user *, pathname) -{ -	return sys_fanotify_mark(fanotify_fd, flags, merge_64(a3, a4), -				 dfd, pathname); -} diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index 103bfe570fe..74f485d3c0e 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S @@ -529,7 +529,7 @@ sys_call_table:  	PTR	sys_accept4  	PTR	compat_sys_recvmmsg		/* 4335 */  	PTR	sys_fanotify_init -	PTR	sys_32_fanotify_mark +	PTR	compat_sys_fanotify_mark  	PTR	sys_prlimit64  	PTR	sys_name_to_handle_at  	PTR	compat_sys_open_by_handle_at	/* 4340 */ diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c index f517e08e7f0..a134ff4da12 100644 --- a/arch/parisc/kernel/sys_parisc32.c +++ b/arch/parisc/kernel/sys_parisc32.c @@ -59,11 +59,3 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,      	current->comm, current->pid, r20);      return -ENOSYS;  } - -asmlinkage long compat_sys_fanotify_mark(int fan_fd, int flags, u32 mask_hi, -					 u32 mask_lo, int fd, -					 const char __user *pathname) -{ -	return sys_fanotify_mark(fan_fd, flags, ((u64)mask_hi << 32) | mask_lo, -				 fd, pathname); -} diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c index cd6e19d263b..8a285876aef 100644 --- a/arch/powerpc/kernel/sys_ppc32.c +++ b/arch/powerpc/kernel/sys_ppc32.c @@ -126,11 +126,3 @@ asmlinkage long compat_sys_sync_file_range2(int fd, unsigned int flags,  	return sys_sync_file_range(fd, offset, nbytes, flags);  } - -asmlinkage long compat_sys_fanotify_mark(int fanotify_fd, unsigned int flags, -					 unsigned mask_hi, unsigned mask_lo, -					 int dfd, const char __user *pathname) -{ -	u64 mask = ((u64)mask_hi << 32) | mask_lo; -	return sys_fanotify_mark(fanotify_fd, flags, mask, dfd, pathname); -} diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 2d72d9e96c1..99696783fbf 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S @@ -1349,15 +1349,6 @@ ENTRY(sys_fanotify_init_wrapper)  	llgfr	%r3,%r3			# unsigned int  	jg	sys_fanotify_init	# branch to system call -ENTRY(sys_fanotify_mark_wrapper) -	lgfr	%r2,%r2			# int -	llgfr	%r3,%r3			# unsigned int -	sllg	%r4,%r4,32		# get high word of 64bit mask -	lr	%r4,%r5			# get low word of 64bit mask -	llgfr	%r5,%r6			# unsigned int -	llgt	%r6,164(%r15)		# char * -	jg	sys_fanotify_mark	# branch to system call -  ENTRY(sys_prlimit64_wrapper)  	lgfr	%r2,%r2			# pid_t  	llgfr	%r3,%r3			# unsigned int diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index 9f214e992ee..9605e063dc8 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S @@ -341,7 +341,7 @@ SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev)  SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo) /* 330 */  SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper)  SYSCALL(sys_fanotify_init,sys_fanotify_init,sys_fanotify_init_wrapper) -SYSCALL(sys_fanotify_mark,sys_fanotify_mark,sys_fanotify_mark_wrapper) +SYSCALL(sys_fanotify_mark,sys_fanotify_mark,compat_sys_fanotify_mark)  SYSCALL(sys_prlimit64,sys_prlimit64,sys_prlimit64_wrapper)  SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,sys_name_to_handle_at_wrapper) /* 335 */  SYSCALL(sys_open_by_handle_at,sys_open_by_handle_at,compat_sys_open_by_handle_at) diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S index 2e680b5245c..f7c72b6efc2 100644 --- a/arch/sparc/kernel/sys32.S +++ b/arch/sparc/kernel/sys32.S @@ -239,15 +239,6 @@ do_sys_accept4: /* sys_accept4(int, struct sockaddr *, int *, int) */  	nop  	nop -	.globl		sys32_fanotify_mark -sys32_fanotify_mark: -	sethi		%hi(sys_fanotify_mark), %g1 -	sllx		%o2, 32, %o2 -	or		%o2, %o3, %o2 -	mov		%o4, %o3 -	jmpl		%g1 + %lo(sys_fanotify_mark), %g0 -	 mov		%o5, %o4 -  	.section	__ex_table,"a"  	.align		4  	.word		1b, __retl_efault, 2b, __retl_efault diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S index 8fd93208021..6d81597064b 100644 --- a/arch/sparc/kernel/systbls_64.S +++ b/arch/sparc/kernel/systbls_64.S @@ -84,7 +84,7 @@ sys_call_table32:  	.word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1  /*320*/	.word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv  	.word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg, sys_fanotify_init -/*330*/	.word sys32_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, compat_sys_open_by_handle_at, compat_sys_clock_adjtime +/*330*/	.word compat_sys_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, compat_sys_open_by_handle_at, compat_sys_clock_adjtime  	.word sys_syncfs, compat_sys_sendmmsg, sys_setns, compat_sys_process_vm_readv, compat_sys_process_vm_writev  /*340*/	.word sys_kern_features, sys_kcmp, sys_finit_module diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c index 4e4907c67d9..8e0ceecdc95 100644 --- a/arch/x86/ia32/sys_ia32.c +++ b/arch/x86/ia32/sys_ia32.c @@ -243,12 +243,3 @@ asmlinkage long sys32_fallocate(int fd, int mode, unsigned offset_lo,  	return sys_fallocate(fd, mode, ((u64)offset_hi << 32) | offset_lo,  			     ((u64)len_hi << 32) | len_lo);  } - -asmlinkage long sys32_fanotify_mark(int fanotify_fd, unsigned int flags, -				    u32 mask_lo, u32 mask_hi, -				    int fd, const char  __user *pathname) -{ -	return sys_fanotify_mark(fanotify_fd, flags, -				 ((u64)mask_hi << 32) | mask_lo, -				 fd, pathname); -} diff --git a/arch/x86/include/asm/sys_ia32.h b/arch/x86/include/asm/sys_ia32.h index 0ef202e232d..82c34ee25a6 100644 --- a/arch/x86/include/asm/sys_ia32.h +++ b/arch/x86/include/asm/sys_ia32.h @@ -50,9 +50,6 @@ asmlinkage long sys32_fallocate(int, int, unsigned,  asmlinkage long sys32_sigreturn(void);  asmlinkage long sys32_rt_sigreturn(void); -asmlinkage long sys32_fanotify_mark(int, unsigned int, u32, u32, int, -				    const char __user *); -  #endif /* CONFIG_COMPAT */  #endif /* _ASM_X86_SYS_IA32_H */ diff --git a/arch/x86/syscalls/syscall_32.tbl b/arch/x86/syscalls/syscall_32.tbl index d0d59bfbccc..aabfb8380a1 100644 --- a/arch/x86/syscalls/syscall_32.tbl +++ b/arch/x86/syscalls/syscall_32.tbl @@ -345,7 +345,7 @@  336	i386	perf_event_open		sys_perf_event_open  337	i386	recvmmsg		sys_recvmmsg			compat_sys_recvmmsg  338	i386	fanotify_init		sys_fanotify_init -339	i386	fanotify_mark		sys_fanotify_mark		sys32_fanotify_mark +339	i386	fanotify_mark		sys_fanotify_mark		compat_sys_fanotify_mark  340	i386	prlimit64		sys_prlimit64  341	i386	name_to_handle_at	sys_name_to_handle_at  342	i386	open_by_handle_at	sys_open_by_handle_at		compat_sys_open_by_handle_at diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c index d0be29fa94c..6c80083a984 100644 --- a/fs/notify/fanotify/fanotify_user.c +++ b/fs/notify/fanotify/fanotify_user.c @@ -13,6 +13,7 @@  #include <linux/slab.h>  #include <linux/types.h>  #include <linux/uaccess.h> +#include <linux/compat.h>  #include <asm/ioctls.h> @@ -857,6 +858,22 @@ fput_and_out:  	return ret;  } +#ifdef CONFIG_COMPAT +COMPAT_SYSCALL_DEFINE6(fanotify_mark, +				int, fanotify_fd, unsigned int, flags, +				__u32, mask0, __u32, mask1, int, dfd, +				const char  __user *, pathname) +{ +	return sys_fanotify_mark(fanotify_fd, flags, +#ifdef __BIG_ENDIAN +				((__u64)mask1 << 32) | mask0, +#else +				((__u64)mask0 << 32) | mask1, +#endif +				 dfd, pathname); +} +#endif +  /*   * fanotify_user_setup - Our initialization function.  Note that we cannot return   * error because we have compiled-in VFS hooks.  So an (unlikely) failure here diff --git a/include/linux/compat.h b/include/linux/compat.h index d53c35352ea..7f0c1dd0907 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -673,6 +673,8 @@ int __compat_save_altstack(compat_stack_t __user *, unsigned long);  asmlinkage long compat_sys_sched_rr_get_interval(compat_pid_t pid,  						 struct compat_timespec __user *interval); +asmlinkage long compat_sys_fanotify_mark(int, unsigned int, __u32, __u32, +					    int, const char __user *);  #else  #define is_compat_task() (0) diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c index bfd6787b355..7078052284f 100644 --- a/kernel/sys_ni.c +++ b/kernel/sys_ni.c @@ -200,6 +200,7 @@ cond_syscall(sys_perf_event_open);  /* fanotify! */  cond_syscall(sys_fanotify_init);  cond_syscall(sys_fanotify_mark); +cond_syscall(compat_sys_fanotify_mark);  /* open by handle */  cond_syscall(sys_name_to_handle_at); |