All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] generic sys_old_select
@ 2010-02-01 18:55 Christoph Hellwig
  2010-02-01 21:58 ` H. Peter Anvin
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Christoph Hellwig @ 2010-02-01 18:55 UTC (permalink / raw)
  To: akpm, linux-kernel, linux-arch
  Cc: linux, dhowells, ysato, tony.luck, geert, zippel, gerg,
	schwidefsky, heiko.carstens, jdike, tglx, mingo, hpa, viro

Add a generic implementation of the old select syscall, which expects it's
argument in a memory block and switch all architectures over to use it.


Signed-off-by: Christoph Hellwig <hch@lst.de>

Index: linux-2.6/arch/arm/kernel/calls.S
===================================================================
--- linux-2.6.orig/arch/arm/kernel/calls.S	2010-01-12 14:08:15.988003897 +0100
+++ linux-2.6/arch/arm/kernel/calls.S	2010-01-29 23:35:20.167003790 +0100
@@ -91,7 +91,7 @@
 		CALL(sys_settimeofday)
 /* 80 */	CALL(sys_getgroups16)
 		CALL(sys_setgroups16)
-		CALL(OBSOLETE(old_select))	/* used by libc4 */
+		CALL(OBSOLETE(sys_old_select))	/* used by libc4 */
 		CALL(sys_symlink)
 		CALL(sys_ni_syscall)		/* was sys_lstat */
 /* 85 */	CALL(sys_readlink)
Index: linux-2.6/arch/m68k/kernel/entry.S
===================================================================
--- linux-2.6.orig/arch/m68k/kernel/entry.S	2010-01-12 14:08:16.008003720 +0100
+++ linux-2.6/arch/m68k/kernel/entry.S	2010-01-29 23:35:20.167003790 +0100
@@ -510,7 +510,7 @@ sys_call_table:
 	.long sys_settimeofday
 	.long sys_getgroups16	/* 80 */
 	.long sys_setgroups16
-	.long old_select
+	.long sys_old_select
 	.long sys_symlink
 	.long sys_lstat
 	.long sys_readlink	/* 85 */
Index: linux-2.6/arch/m68knommu/kernel/syscalltable.S
===================================================================
--- linux-2.6.orig/arch/m68knommu/kernel/syscalltable.S	2010-01-12 14:08:16.037010906 +0100
+++ linux-2.6/arch/m68knommu/kernel/syscalltable.S	2010-01-29 23:35:20.168003778 +0100
@@ -100,7 +100,7 @@ ENTRY(sys_call_table)
 	.long sys_settimeofday
 	.long sys_getgroups16	/* 80 */
 	.long sys_setgroups16
-	.long old_select
+	.long sys_old_select
 	.long sys_symlink
 	.long sys_lstat
 	.long sys_readlink	/* 85 */
Index: linux-2.6/arch/x86/kernel/syscall_table_32.S
===================================================================
--- linux-2.6.orig/arch/x86/kernel/syscall_table_32.S	2010-01-12 14:08:16.058006317 +0100
+++ linux-2.6/arch/x86/kernel/syscall_table_32.S	2010-01-29 23:35:20.169024159 +0100
@@ -81,7 +81,7 @@ ENTRY(sys_call_table)
 	.long sys_settimeofday
 	.long sys_getgroups16	/* 80 */
 	.long sys_setgroups16
-	.long old_select
+	.long sys_old_select
 	.long sys_symlink
 	.long sys_lstat
 	.long sys_readlink	/* 85 */
Index: linux-2.6/arch/x86/include/asm/sys_ia32.h
===================================================================
--- linux-2.6.orig/arch/x86/include/asm/sys_ia32.h	2010-01-12 14:08:16.077254299 +0100
+++ linux-2.6/arch/x86/include/asm/sys_ia32.h	2010-01-29 23:35:20.170003753 +0100
@@ -40,8 +40,6 @@ asmlinkage long sys32_rt_sigprocmask(int
 				     compat_sigset_t __user *, unsigned int);
 asmlinkage long sys32_alarm(unsigned int);
 
-struct sel_arg_struct;
-asmlinkage long sys32_old_select(struct sel_arg_struct __user *);
 asmlinkage long sys32_waitpid(compat_pid_t, unsigned int *, int);
 asmlinkage long sys32_sysfs(int, u32, u32);
 
Index: linux-2.6/arch/arm/include/asm/unistd.h
===================================================================
--- linux-2.6.orig/arch/arm/include/asm/unistd.h	2010-01-19 20:00:31.717004132 +0100
+++ linux-2.6/arch/arm/include/asm/unistd.h	2010-01-29 23:35:20.171004090 +0100
@@ -443,6 +443,7 @@
 #define __ARCH_WANT_SYS_SIGPROCMASK
 #define __ARCH_WANT_SYS_RT_SIGACTION
 #define __ARCH_WANT_SYS_RT_SIGSUSPEND
+#define __ARCH_WANT_SYS_OLD_SELECT
 
 #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT)
 #define __ARCH_WANT_SYS_TIME
Index: linux-2.6/arch/h8300/include/asm/unistd.h
===================================================================
--- linux-2.6.orig/arch/h8300/include/asm/unistd.h	2010-01-12 14:08:16.123027306 +0100
+++ linux-2.6/arch/h8300/include/asm/unistd.h	2010-01-29 23:35:20.172010434 +0100
@@ -348,6 +348,7 @@
 #define __ARCH_WANT_SYS_LLSEEK
 #define __ARCH_WANT_SYS_NICE
 #define __ARCH_WANT_SYS_OLD_GETRLIMIT
+#define __ARCH_WANT_SYS_OLD_SELECT
 #define __ARCH_WANT_SYS_OLDUMOUNT
 #define __ARCH_WANT_SYS_SIGPENDING
 #define __ARCH_WANT_SYS_SIGPROCMASK
Index: linux-2.6/arch/m68k/include/asm/unistd.h
===================================================================
--- linux-2.6.orig/arch/m68k/include/asm/unistd.h	2010-01-12 14:08:16.027006350 +0100
+++ linux-2.6/arch/m68k/include/asm/unistd.h	2010-01-29 23:35:20.173024739 +0100
@@ -359,6 +359,7 @@
 #define __ARCH_WANT_SYS_LLSEEK
 #define __ARCH_WANT_SYS_NICE
 #define __ARCH_WANT_SYS_OLD_GETRLIMIT
+#define __ARCH_WANT_SYS_OLD_SELECT
 #define __ARCH_WANT_SYS_OLDUMOUNT
 #define __ARCH_WANT_SYS_SIGPENDING
 #define __ARCH_WANT_SYS_SIGPROCMASK
Index: linux-2.6/arch/x86/include/asm/unistd_32.h
===================================================================
--- linux-2.6.orig/arch/x86/include/asm/unistd_32.h	2010-01-12 14:08:16.087262626 +0100
+++ linux-2.6/arch/x86/include/asm/unistd_32.h	2010-01-29 23:35:20.173024739 +0100
@@ -366,6 +366,7 @@
 #define __ARCH_WANT_SYS_LLSEEK
 #define __ARCH_WANT_SYS_NICE
 #define __ARCH_WANT_SYS_OLD_GETRLIMIT
+#define __ARCH_WANT_SYS_OLD_SELECT
 #define __ARCH_WANT_SYS_OLDUMOUNT
 #define __ARCH_WANT_SYS_SIGPENDING
 #define __ARCH_WANT_SYS_SIGPROCMASK
Index: linux-2.6/arch/ia64/ia32/sys_ia32.c
===================================================================
--- linux-2.6.orig/arch/ia64/ia32/sys_ia32.c	2010-01-12 14:08:16.140253941 +0100
+++ linux-2.6/arch/ia64/ia32/sys_ia32.c	2010-01-29 23:35:20.175003692 +0100
@@ -1107,25 +1107,6 @@ sys32_alarm (unsigned int seconds)
 	return alarm_setitimer(seconds);
 }
 
-struct sel_arg_struct {
-	unsigned int n;
-	unsigned int inp;
-	unsigned int outp;
-	unsigned int exp;
-	unsigned int tvp;
-};
-
-asmlinkage long
-sys32_old_select (struct sel_arg_struct __user *arg)
-{
-	struct sel_arg_struct a;
-
-	if (copy_from_user(&a, arg, sizeof(a)))
-		return -EFAULT;
-	return compat_sys_select(a.n, compat_ptr(a.inp), compat_ptr(a.outp),
-				 compat_ptr(a.exp), compat_ptr(a.tvp));
-}
-
 #define SEMOP		 1
 #define SEMGET		 2
 #define SEMCTL		 3
Index: linux-2.6/arch/x86/ia32/sys_ia32.c
===================================================================
--- linux-2.6.orig/arch/x86/ia32/sys_ia32.c	2010-01-12 14:08:16.103003946 +0100
+++ linux-2.6/arch/x86/ia32/sys_ia32.c	2010-01-29 23:35:20.175003692 +0100
@@ -332,24 +332,6 @@ asmlinkage long sys32_alarm(unsigned int
 	return alarm_setitimer(seconds);
 }
 
-struct sel_arg_struct {
-	unsigned int n;
-	unsigned int inp;
-	unsigned int outp;
-	unsigned int exp;
-	unsigned int tvp;
-};
-
-asmlinkage long sys32_old_select(struct sel_arg_struct __user *arg)
-{
-	struct sel_arg_struct a;
-
-	if (copy_from_user(&a, arg, sizeof(a)))
-		return -EFAULT;
-	return compat_sys_select(a.n, compat_ptr(a.inp), compat_ptr(a.outp),
-				 compat_ptr(a.exp), compat_ptr(a.tvp));
-}
-
 asmlinkage long sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr,
 			      int options)
 {
Index: linux-2.6/fs/select.c
===================================================================
--- linux-2.6.orig/fs/select.c	2010-01-12 14:08:16.194003803 +0100
+++ linux-2.6/fs/select.c	2010-01-29 23:35:20.176004099 +0100
@@ -691,6 +691,23 @@ SYSCALL_DEFINE6(pselect6, int, n, fd_set
 }
 #endif /* HAVE_SET_RESTORE_SIGMASK */
 
+#ifdef __ARCH_WANT_SYS_OLD_SELECT
+struct sel_arg_struct {
+	unsigned long n;
+	fd_set __user *inp, *outp, *exp;
+	struct timeval __user *tvp;
+};
+
+SYSCALL_DEFINE1(old_select, struct sel_arg_struct __user *, arg)
+{
+	struct sel_arg_struct a;
+
+	if (copy_from_user(&a, arg, sizeof(a)))
+		return -EFAULT;
+	return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
+}
+#endif
+
 struct poll_list {
 	struct poll_list *next;
 	int len;
Index: linux-2.6/arch/h8300/kernel/syscalls.S
===================================================================
--- linux-2.6.orig/arch/h8300/kernel/syscalls.S	2010-01-12 14:08:16.128253391 +0100
+++ linux-2.6/arch/h8300/kernel/syscalls.S	2010-01-29 23:35:20.177003178 +0100
@@ -96,7 +96,7 @@ SYMBOL_NAME_LABEL(sys_call_table)	
 	.long SYMBOL_NAME(sys_settimeofday)
 	.long SYMBOL_NAME(sys_getgroups16)	/* 80 */
 	.long SYMBOL_NAME(sys_setgroups16)
-	.long SYMBOL_NAME(old_select)
+	.long SYMBOL_NAME(sys_old_select)
 	.long SYMBOL_NAME(sys_symlink)
 	.long SYMBOL_NAME(sys_lstat)
 	.long SYMBOL_NAME(sys_readlink)		/* 85 */
Index: linux-2.6/arch/mn10300/include/asm/unistd.h
===================================================================
--- linux-2.6.orig/arch/mn10300/include/asm/unistd.h	2010-01-19 20:00:31.762003647 +0100
+++ linux-2.6/arch/mn10300/include/asm/unistd.h	2010-01-29 23:35:20.178004074 +0100
@@ -375,6 +375,7 @@
 #define __ARCH_WANT_SYS_LLSEEK
 #define __ARCH_WANT_SYS_NICE
 #define __ARCH_WANT_SYS_OLD_GETRLIMIT
+#define __ARCH_WANT_SYS_OLD_SELECT
 #define __ARCH_WANT_SYS_OLDUMOUNT
 #define __ARCH_WANT_SYS_SIGPENDING
 #define __ARCH_WANT_SYS_SIGPROCMASK
Index: linux-2.6/arch/mn10300/kernel/entry.S
===================================================================
--- linux-2.6.orig/arch/mn10300/kernel/entry.S	2010-01-19 20:00:31.763003634 +0100
+++ linux-2.6/arch/mn10300/kernel/entry.S	2010-01-29 23:35:20.179003992 +0100
@@ -468,7 +468,7 @@ ENTRY(sys_call_table)
 	.long sys_settimeofday
 	.long sys_getgroups16	/* 80 */
 	.long sys_setgroups16
-	.long old_select
+	.long sys_old_select
 	.long sys_symlink
 	.long sys_lstat
 	.long sys_readlink	/* 85 */
Index: linux-2.6/include/linux/syscalls.h
===================================================================
--- linux-2.6.orig/include/linux/syscalls.h	2010-01-19 20:00:32.320004402 +0100
+++ linux-2.6/include/linux/syscalls.h	2010-01-29 23:35:20.179003992 +0100
@@ -34,6 +34,7 @@ struct pollfd;
 struct rlimit;
 struct rusage;
 struct sched_param;
+struct sel_arg_struct;
 struct semaphore;
 struct sembuf;
 struct shmid_ds;
@@ -638,6 +639,7 @@ asmlinkage long sys_poll(struct pollfd _
 				long timeout);
 asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp,
 			fd_set __user *exp, struct timeval __user *tvp);
+asmlinkage long sys_old_select(struct sel_arg_struct __user * arg);
 asmlinkage long sys_epoll_create(int size);
 asmlinkage long sys_epoll_create1(int flags);
 asmlinkage long sys_epoll_ctl(int epfd, int op, int fd,
Index: linux-2.6/arch/arm/kernel/sys_arm.c
===================================================================
--- linux-2.6.orig/arch/arm/kernel/sys_arm.c	2010-01-12 14:08:15.995003182 +0100
+++ linux-2.6/arch/arm/kernel/sys_arm.c	2010-01-29 23:35:20.181024291 +0100
@@ -54,27 +54,6 @@ out:
 	return error;
 }
 
-/*
- * Perform the select(nd, in, out, ex, tv) and mmap() system
- * calls.
- */
-
-struct sel_arg_struct {
-	unsigned long n;
-	fd_set __user *inp, *outp, *exp;
-	struct timeval __user *tvp;
-};
-
-asmlinkage int old_select(struct sel_arg_struct __user *arg)
-{
-	struct sel_arg_struct a;
-
-	if (copy_from_user(&a, arg, sizeof(a)))
-		return -EFAULT;
-	/* sys_select() does the appropriate kernel locking */
-	return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
-}
-
 #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT)
 /*
  * sys_ipc() is the de-multiplexer for the SysV IPC calls..
Index: linux-2.6/arch/h8300/kernel/sys_h8300.c
===================================================================
--- linux-2.6.orig/arch/h8300/kernel/sys_h8300.c	2010-01-12 14:08:16.134253247 +0100
+++ linux-2.6/arch/h8300/kernel/sys_h8300.c	2010-01-29 23:35:20.182003257 +0100
@@ -60,22 +60,6 @@ out:
 	return error;
 }
 
-struct sel_arg_struct {
-	unsigned long n;
-	fd_set *inp, *outp, *exp;
-	struct timeval *tvp;
-};
-
-asmlinkage int old_select(struct sel_arg_struct *arg)
-{
-	struct sel_arg_struct a;
-
-	if (copy_from_user(&a, arg, sizeof(a)))
-		return -EFAULT;
-	/* sys_select() does the appropriate kernel locking */
-	return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
-}
-
 /*
  * sys_ipc() is the de-multiplexer for the SysV IPC calls..
  *
Index: linux-2.6/arch/m68k/kernel/sys_m68k.c
===================================================================
--- linux-2.6.orig/arch/m68k/kernel/sys_m68k.c	2010-01-12 14:08:16.016023317 +0100
+++ linux-2.6/arch/m68k/kernel/sys_m68k.c	2010-01-29 23:35:20.182003257 +0100
@@ -75,22 +75,6 @@ out:
 	return error;
 }
 
-struct sel_arg_struct {
-	unsigned long n;
-	fd_set __user *inp, *outp, *exp;
-	struct timeval __user *tvp;
-};
-
-asmlinkage int old_select(struct sel_arg_struct __user *arg)
-{
-	struct sel_arg_struct a;
-
-	if (copy_from_user(&a, arg, sizeof(a)))
-		return -EFAULT;
-	/* sys_select() does the appropriate kernel locking */
-	return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
-}
-
 /*
  * sys_ipc() is the de-multiplexer for the SysV IPC calls..
  *
Index: linux-2.6/arch/ia64/ia32/ia32_entry.S
===================================================================
--- linux-2.6.orig/arch/ia64/ia32/ia32_entry.S	2010-01-12 14:08:16.149022167 +0100
+++ linux-2.6/arch/ia64/ia32/ia32_entry.S	2010-01-29 23:35:20.183011625 +0100
@@ -260,7 +260,7 @@ ia32_syscall_table:
 	data8 compat_sys_settimeofday
 	data8 sys32_getgroups16	  /* 80 */
 	data8 sys32_setgroups16
-	data8 sys32_old_select
+	data8 compat_sys_old_select
 	data8 sys_symlink
 	data8 sys_ni_syscall
 	data8 sys_readlink	  /* 85 */
Index: linux-2.6/arch/m68knommu/kernel/sys_m68k.c
===================================================================
--- linux-2.6.orig/arch/m68knommu/kernel/sys_m68k.c	2010-01-12 14:08:16.048262408 +0100
+++ linux-2.6/arch/m68knommu/kernel/sys_m68k.c	2010-01-29 23:35:20.183011625 +0100
@@ -61,22 +61,6 @@ out:
 	return error;
 }
 
-struct sel_arg_struct {
-	unsigned long n;
-	fd_set *inp, *outp, *exp;
-	struct timeval *tvp;
-};
-
-asmlinkage int old_select(struct sel_arg_struct *arg)
-{
-	struct sel_arg_struct a;
-
-	if (copy_from_user(&a, arg, sizeof(a)))
-		return -EFAULT;
-	/* sys_select() does the appropriate kernel locking */
-	return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
-}
-
 /*
  * sys_ipc() is the de-multiplexer for the SysV IPC calls..
  *
Index: linux-2.6/arch/mn10300/kernel/sys_mn10300.c
===================================================================
--- linux-2.6.orig/arch/mn10300/kernel/sys_mn10300.c	2010-01-12 14:08:16.171254258 +0100
+++ linux-2.6/arch/mn10300/kernel/sys_mn10300.c	2010-01-29 23:35:20.184012102 +0100
@@ -32,24 +32,6 @@ asmlinkage long old_mmap(unsigned long a
 	return sys_mmap_pgoff(addr, len, prot, flags, fd, offset >> PAGE_SHIFT);
 }
 
-struct sel_arg_struct {
-	unsigned long n;
-	fd_set *inp;
-	fd_set *outp;
-	fd_set *exp;
-	struct timeval *tvp;
-};
-
-asmlinkage int old_select(struct sel_arg_struct __user *arg)
-{
-	struct sel_arg_struct a;
-
-	if (copy_from_user(&a, arg, sizeof(a)))
-		return -EFAULT;
-	/* sys_select() does the appropriate kernel locking */
-	return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
-}
-
 /*
  * sys_ipc() is the de-multiplexer for the SysV IPC calls..
  *
Index: linux-2.6/arch/x86/ia32/ia32entry.S
===================================================================
--- linux-2.6.orig/arch/x86/ia32/ia32entry.S	2010-01-12 14:08:16.113004172 +0100
+++ linux-2.6/arch/x86/ia32/ia32entry.S	2010-01-29 23:35:20.184012102 +0100
@@ -586,7 +586,7 @@ ia32_sys_call_table:
 	.quad compat_sys_settimeofday
 	.quad sys_getgroups16	/* 80 */
 	.quad sys_setgroups16
-	.quad sys32_old_select
+	.quad compat_sys_old_select
 	.quad sys_symlink
 	.quad sys_lstat
 	.quad sys_readlink		/* 85 */
Index: linux-2.6/arch/x86/include/asm/syscalls.h
===================================================================
--- linux-2.6.orig/arch/x86/include/asm/syscalls.h	2010-01-12 14:08:16.096004242 +0100
+++ linux-2.6/arch/x86/include/asm/syscalls.h	2010-01-29 23:35:20.185004057 +0100
@@ -52,12 +52,10 @@ unsigned long sys_sigreturn(struct pt_re
 
 /* kernel/sys_i386_32.c */
 struct mmap_arg_struct;
-struct sel_arg_struct;
 struct oldold_utsname;
 struct old_utsname;
 
 asmlinkage int old_mmap(struct mmap_arg_struct __user *);
-asmlinkage int old_select(struct sel_arg_struct __user *);
 asmlinkage int sys_ipc(uint, int, int, int, void __user *, long);
 asmlinkage int sys_uname(struct old_utsname __user *);
 asmlinkage int sys_olduname(struct oldold_utsname __user *);
Index: linux-2.6/arch/x86/kernel/sys_i386_32.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/sys_i386_32.c	2010-01-12 14:08:16.068010594 +0100
+++ linux-2.6/arch/x86/kernel/sys_i386_32.c	2010-01-29 23:35:20.186004046 +0100
@@ -58,23 +58,6 @@ out:
 	return err;
 }
 
-
-struct sel_arg_struct {
-	unsigned long n;
-	fd_set __user *inp, *outp, *exp;
-	struct timeval __user *tvp;
-};
-
-asmlinkage int old_select(struct sel_arg_struct __user *arg)
-{
-	struct sel_arg_struct a;
-
-	if (copy_from_user(&a, arg, sizeof(a)))
-		return -EFAULT;
-	/* sys_select() does the appropriate kernel locking */
-	return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
-}
-
 /*
  * sys_ipc() is the de-multiplexer for the SysV IPC calls..
  *
Index: linux-2.6/fs/compat.c
===================================================================
--- linux-2.6.orig/fs/compat.c	2010-01-12 14:08:16.202003005 +0100
+++ linux-2.6/fs/compat.c	2010-01-29 23:35:20.187003404 +0100
@@ -1795,6 +1795,24 @@ asmlinkage long compat_sys_select(int n,
 	return ret;
 }
 
+struct compat_sel_arg_struct {
+	compat_ulong_t n;
+	compat_ulong_t inp;
+	compat_ulong_t outp;
+	compat_ulong_t exp;
+	compat_ulong_t tvp;
+};
+
+asmlinkage long compat_sys_old_select(struct compat_sel_arg_struct __user *arg)
+{
+	struct compat_sel_arg_struct a;
+
+	if (copy_from_user(&a, arg, sizeof(a)))
+		return -EFAULT;
+	return compat_sys_select(a.n, compat_ptr(a.inp), compat_ptr(a.outp),
+				 compat_ptr(a.exp), compat_ptr(a.tvp));
+}
+
 #ifdef HAVE_SET_RESTORE_SIGMASK
 static long do_compat_pselect(int n, compat_ulong_t __user *inp,
 	compat_ulong_t __user *outp, compat_ulong_t __user *exp,
Index: linux-2.6/arch/s390/kernel/entry.h
===================================================================
--- linux-2.6.orig/arch/s390/kernel/entry.h	2010-01-12 14:08:16.179253810 +0100
+++ linux-2.6/arch/s390/kernel/entry.h	2010-01-29 23:35:20.187003404 +0100
@@ -28,7 +28,6 @@ struct new_utsname;
 struct mmap_arg_struct;
 struct fadvise64_64_args;
 struct old_sigaction;
-struct sel_arg_struct;
 
 long sys_mmap2(struct mmap_arg_struct __user  *arg);
 long sys_s390_old_mmap(struct mmap_arg_struct __user *arg);
Index: linux-2.6/arch/um/sys-i386/syscalls.c
===================================================================
--- linux-2.6.orig/arch/um/sys-i386/syscalls.c	2010-01-12 14:08:16.188003178 +0100
+++ linux-2.6/arch/um/sys-i386/syscalls.c	2010-01-29 23:35:20.188011634 +0100
@@ -44,24 +44,6 @@ long old_mmap_i386(struct mmap_arg_struc
 	return err;
 }
 
-struct sel_arg_struct {
-	unsigned long n;
-	fd_set __user *inp;
-	fd_set __user *outp;
-	fd_set __user *exp;
-	struct timeval __user *tvp;
-};
-
-long old_select(struct sel_arg_struct __user *arg)
-{
-	struct sel_arg_struct a;
-
-	if (copy_from_user(&a, arg, sizeof(a)))
-		return -EFAULT;
-	/* sys_select() does the appropriate kernel locking */
-	return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
-}
-
 /*
  * The prototype on i386 is:
  *
Index: linux-2.6/include/linux/compat.h
===================================================================
--- linux-2.6.orig/include/linux/compat.h	2010-01-12 14:08:16.214260642 +0100
+++ linux-2.6/include/linux/compat.h	2010-01-29 23:35:20.189025938 +0100
@@ -23,6 +23,7 @@
 typedef __compat_uid32_t	compat_uid_t;
 typedef __compat_gid32_t	compat_gid_t;
 
+struct compat_sel_arg_struct;
 struct rusage;
 
 struct compat_itimerspec { 
@@ -249,6 +250,8 @@ asmlinkage long compat_sys_select(int n,
 		compat_ulong_t __user *outp, compat_ulong_t __user *exp,
 		struct compat_timeval __user *tvp);
 
+asmlinkage long compat_sys_old_select(struct compat_sel_arg_struct __user *arg);
+
 asmlinkage long compat_sys_wait4(compat_pid_t pid,
 				 compat_uint_t __user *stat_addr, int options,
 				 struct compat_rusage __user *ru);

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/6] generic sys_old_select
  2010-02-01 18:55 [PATCH 1/6] generic sys_old_select Christoph Hellwig
@ 2010-02-01 21:58 ` H. Peter Anvin
  2010-02-01 22:40 ` Andreas Schwab
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: H. Peter Anvin @ 2010-02-01 21:58 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: akpm, linux-kernel, linux-arch, linux, dhowells, ysato,
	tony.luck, geert, zippel, gerg, schwidefsky, heiko.carstens,
	jdike, tglx, mingo, viro

On 02/01/2010 10:55 AM, Christoph Hellwig wrote:
> Add a generic implementation of the old select syscall, which expects it's
> argument in a memory block and switch all architectures over to use it.
> 
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

Looks good to me from an x86 perspective.

Reviewed-by: H. Peter Anvin <hpa@zytor.com>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/6] generic sys_old_select
  2010-02-01 18:55 [PATCH 1/6] generic sys_old_select Christoph Hellwig
  2010-02-01 21:58 ` H. Peter Anvin
@ 2010-02-01 22:40 ` Andreas Schwab
  2010-02-02  8:34   ` Christoph Hellwig
  2010-02-01 23:37 ` Russell King
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 8+ messages in thread
From: Andreas Schwab @ 2010-02-01 22:40 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: akpm, linux-kernel, linux-arch, linux, dhowells, ysato,
	tony.luck, geert, zippel, gerg, schwidefsky, heiko.carstens,
	jdike, tglx, mingo, hpa, viro

Christoph Hellwig <hch@lst.de> writes:

> Index: linux-2.6/fs/compat.c
> ===================================================================
> --- linux-2.6.orig/fs/compat.c	2010-01-12 14:08:16.202003005 +0100
> +++ linux-2.6/fs/compat.c	2010-01-29 23:35:20.187003404 +0100
> @@ -1795,6 +1795,24 @@ asmlinkage long compat_sys_select(int n,
>  	return ret;
>  }
>  
> +struct compat_sel_arg_struct {
> +	compat_ulong_t n;
> +	compat_ulong_t inp;
> +	compat_ulong_t outp;
> +	compat_ulong_t exp;
> +	compat_ulong_t tvp;
> +};

Shouldn't the last four be compat_uptr_t?

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/6] generic sys_old_select
  2010-02-01 18:55 [PATCH 1/6] generic sys_old_select Christoph Hellwig
  2010-02-01 21:58 ` H. Peter Anvin
  2010-02-01 22:40 ` Andreas Schwab
@ 2010-02-01 23:37 ` Russell King
  2010-02-02  1:03 ` Greg Ungerer
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Russell King @ 2010-02-01 23:37 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: akpm, linux-kernel, linux-arch, linux, dhowells, ysato,
	tony.luck, geert, zippel, gerg, schwidefsky, heiko.carstens,
	jdike, tglx, mingo, hpa, viro

On Mon, Feb 01, 2010 at 07:55:06PM +0100, Christoph Hellwig wrote:
> Add a generic implementation of the old select syscall, which expects it's
> argument in a memory block and switch all architectures over to use it.

Looks fine to me.

Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/6] generic sys_old_select
  2010-02-01 18:55 [PATCH 1/6] generic sys_old_select Christoph Hellwig
                   ` (2 preceding siblings ...)
  2010-02-01 23:37 ` Russell King
@ 2010-02-02  1:03 ` Greg Ungerer
  2010-02-02  8:55 ` Dave Young
  2010-02-08 14:05 ` David Howells
  5 siblings, 0 replies; 8+ messages in thread
From: Greg Ungerer @ 2010-02-02  1:03 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: akpm, linux-kernel, linux-arch, linux, dhowells, ysato,
	tony.luck, geert, zippel, gerg, schwidefsky, heiko.carstens,
	jdike, tglx, mingo, hpa, viro

Christoph Hellwig wrote:
> Add a generic implementation of the old select syscall, which expects it's
> argument in a memory block and switch all architectures over to use it.
> 
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

For the m68knommu parts

Acked-by: Greg Ungerer <gerg@uclinux.org>


-- 
------------------------------------------------------------------------
Greg Ungerer  --  Principal Engineer        EMAIL:     gerg@snapgear.com
SnapGear Group, McAfee                      PHONE:       +61 7 3435 2888
8 Gardner Close                             FAX:         +61 7 3217 5323
Milton, QLD, 4064, Australia                WEB: http://www.SnapGear.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/6] generic sys_old_select
  2010-02-01 22:40 ` Andreas Schwab
@ 2010-02-02  8:34   ` Christoph Hellwig
  0 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2010-02-02  8:34 UTC (permalink / raw)
  To: Andreas Schwab
  Cc: Christoph Hellwig, akpm, linux-kernel, linux-arch, linux,
	dhowells, ysato, tony.luck, geert, zippel, gerg, schwidefsky,
	heiko.carstens, jdike, tglx, mingo, hpa, viro

On Mon, Feb 01, 2010 at 11:40:29PM +0100, Andreas Schwab wrote:
> > Index: linux-2.6/fs/compat.c
> > ===================================================================
> > --- linux-2.6.orig/fs/compat.c	2010-01-12 14:08:16.202003005 +0100
> > +++ linux-2.6/fs/compat.c	2010-01-29 23:35:20.187003404 +0100
> > @@ -1795,6 +1795,24 @@ asmlinkage long compat_sys_select(int n,
> >  	return ret;
> >  }
> >  
> > +struct compat_sel_arg_struct {
> > +	compat_ulong_t n;
> > +	compat_ulong_t inp;
> > +	compat_ulong_t outp;
> > +	compat_ulong_t exp;
> > +	compat_ulong_t tvp;
> > +};
> 
> Shouldn't the last four be compat_uptr_t?

Strictly speaking yes, although it doesn't matter for the generated
code.  The patch below makes it use the strictly correct type:


Index: linux-2.6/fs/compat.c
===================================================================
--- linux-2.6.orig/fs/compat.c	2010-02-02 09:20:16.207003623 +0100
+++ linux-2.6/fs/compat.c	2010-02-02 09:20:53.554012789 +0100
@@ -1797,10 +1797,10 @@ asmlinkage long compat_sys_select(int n,
 
 struct compat_sel_arg_struct {
 	compat_ulong_t n;
-	compat_ulong_t inp;
-	compat_ulong_t outp;
-	compat_ulong_t exp;
-	compat_ulong_t tvp;
+	compat_uptr_t inp;
+	compat_uptr_t outp;
+	compat_uptr_t exp;
+	compat_uptr_t tvp;
 };
 
 asmlinkage long compat_sys_old_select(struct compat_sel_arg_struct __user *arg)


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/6] generic sys_old_select
  2010-02-01 18:55 [PATCH 1/6] generic sys_old_select Christoph Hellwig
                   ` (3 preceding siblings ...)
  2010-02-02  1:03 ` Greg Ungerer
@ 2010-02-02  8:55 ` Dave Young
  2010-02-08 14:05 ` David Howells
  5 siblings, 0 replies; 8+ messages in thread
From: Dave Young @ 2010-02-02  8:55 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: akpm, linux-kernel, linux-arch, linux, dhowells, ysato,
	tony.luck, geert, zippel, gerg, schwidefsky, heiko.carstens,
	jdike, tglx, mingo, hpa, viro

Hi,

On 02/01/2010 10:55 AM, Christoph Hellwig wrote:
[snip]
> +asmlinkage long sys_old_select(struct sel_arg_struct __user * arg);

A trival style problem: "foo * bar"

--
Regards
dave

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/6] generic sys_old_select
  2010-02-01 18:55 [PATCH 1/6] generic sys_old_select Christoph Hellwig
                   ` (4 preceding siblings ...)
  2010-02-02  8:55 ` Dave Young
@ 2010-02-08 14:05 ` David Howells
  5 siblings, 0 replies; 8+ messages in thread
From: David Howells @ 2010-02-08 14:05 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: dhowells, akpm, linux-kernel, linux-arch, linux, ysato,
	tony.luck, geert, zippel, gerg, schwidefsky, heiko.carstens,
	jdike, tglx, mingo, hpa, viro

Christoph Hellwig <hch@lst.de> wrote:

> Add a generic implementation of the old select syscall, which expects it's
> argument in a memory block and switch all architectures over to use it.
> 
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

Acked-by: David Howells <dhowells@redhat.com> [MN10300]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-02-08 14:08 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-01 18:55 [PATCH 1/6] generic sys_old_select Christoph Hellwig
2010-02-01 21:58 ` H. Peter Anvin
2010-02-01 22:40 ` Andreas Schwab
2010-02-02  8:34   ` Christoph Hellwig
2010-02-01 23:37 ` Russell King
2010-02-02  1:03 ` Greg Ungerer
2010-02-02  8:55 ` Dave Young
2010-02-08 14:05 ` David Howells

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.