+ add-generic-sys_old_select.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     Add generic sys_old_select()
has been added to the -mm tree.  Its filename is
     add-generic-sys_old_select.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/SubmitChecklist when testing your code ***

See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find
out what to do about this

The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/

------------------------------------------------------
Subject: Add generic sys_old_select()
From: Christoph Hellwig <hch@xxxxxx>

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

Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx>
Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>
Cc: Paul Mundt <lethal@xxxxxxxxxxxx>
Cc: Jeff Dike <jdike@xxxxxxxxxxx>
Cc: Hirokazu Takata <takata@xxxxxxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxx>
Reviewed-by: H. Peter Anvin <hpa@xxxxxxxxx>
Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
Cc: Arnd Bergmann <arnd@xxxxxxxx>
Cc: Heiko Carstens <heiko.carstens@xxxxxxxxxx>
Cc: Martin Schwidefsky <schwidefsky@xxxxxxxxxx>
Cc: "Luck, Tony" <tony.luck@xxxxxxxxx>
Cc: James Morris <jmorris@xxxxxxxxx>
Acked-by: Andreas Schwab <schwab@xxxxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

 arch/arm/include/asm/unistd.h        |    1 +
 arch/arm/kernel/calls.S              |    2 +-
 arch/arm/kernel/sys_arm.c            |   21 ---------------------
 arch/h8300/include/asm/unistd.h      |    1 +
 arch/h8300/kernel/sys_h8300.c        |   16 ----------------
 arch/h8300/kernel/syscalls.S         |    2 +-
 arch/ia64/ia32/ia32_entry.S          |    2 +-
 arch/ia64/ia32/sys_ia32.c            |   19 -------------------
 arch/m68k/include/asm/unistd.h       |    1 +
 arch/m68k/kernel/entry.S             |    2 +-
 arch/m68k/kernel/sys_m68k.c          |   16 ----------------
 arch/m68knommu/kernel/sys_m68k.c     |   16 ----------------
 arch/m68knommu/kernel/syscalltable.S |    2 +-
 arch/mn10300/include/asm/unistd.h    |    1 +
 arch/mn10300/kernel/entry.S          |    2 +-
 arch/mn10300/kernel/sys_mn10300.c    |   18 ------------------
 arch/s390/kernel/entry.h             |    1 -
 arch/um/sys-i386/syscalls.c          |   18 ------------------
 arch/x86/ia32/ia32entry.S            |    2 +-
 arch/x86/ia32/sys_ia32.c             |   18 ------------------
 arch/x86/include/asm/sys_ia32.h      |    2 --
 arch/x86/include/asm/syscalls.h      |    2 --
 arch/x86/include/asm/unistd_32.h     |    1 +
 arch/x86/kernel/sys_i386_32.c        |   17 -----------------
 arch/x86/kernel/syscall_table_32.S   |    2 +-
 fs/compat.c                          |   18 ++++++++++++++++++
 fs/select.c                          |   17 +++++++++++++++++
 include/linux/compat.h               |    3 +++
 include/linux/syscalls.h             |    2 ++
 29 files changed, 53 insertions(+), 172 deletions(-)

diff -puN arch/arm/include/asm/unistd.h~add-generic-sys_old_select arch/arm/include/asm/unistd.h
--- a/arch/arm/include/asm/unistd.h~add-generic-sys_old_select
+++ a/arch/arm/include/asm/unistd.h
@@ -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
diff -puN arch/arm/kernel/calls.S~add-generic-sys_old_select arch/arm/kernel/calls.S
--- a/arch/arm/kernel/calls.S~add-generic-sys_old_select
+++ a/arch/arm/kernel/calls.S
@@ -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)
diff -puN arch/arm/kernel/sys_arm.c~add-generic-sys_old_select arch/arm/kernel/sys_arm.c
--- a/arch/arm/kernel/sys_arm.c~add-generic-sys_old_select
+++ a/arch/arm/kernel/sys_arm.c
@@ -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..
diff -puN arch/h8300/include/asm/unistd.h~add-generic-sys_old_select arch/h8300/include/asm/unistd.h
--- a/arch/h8300/include/asm/unistd.h~add-generic-sys_old_select
+++ a/arch/h8300/include/asm/unistd.h
@@ -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
diff -puN arch/h8300/kernel/sys_h8300.c~add-generic-sys_old_select arch/h8300/kernel/sys_h8300.c
--- a/arch/h8300/kernel/sys_h8300.c~add-generic-sys_old_select
+++ a/arch/h8300/kernel/sys_h8300.c
@@ -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..
  *
diff -puN arch/h8300/kernel/syscalls.S~add-generic-sys_old_select arch/h8300/kernel/syscalls.S
--- a/arch/h8300/kernel/syscalls.S~add-generic-sys_old_select
+++ a/arch/h8300/kernel/syscalls.S
@@ -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 */
diff -puN arch/ia64/ia32/ia32_entry.S~add-generic-sys_old_select arch/ia64/ia32/ia32_entry.S
--- a/arch/ia64/ia32/ia32_entry.S~add-generic-sys_old_select
+++ a/arch/ia64/ia32/ia32_entry.S
@@ -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 */
diff -puN arch/ia64/ia32/sys_ia32.c~add-generic-sys_old_select arch/ia64/ia32/sys_ia32.c
--- a/arch/ia64/ia32/sys_ia32.c~add-generic-sys_old_select
+++ a/arch/ia64/ia32/sys_ia32.c
@@ -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
diff -puN arch/m68k/include/asm/unistd.h~add-generic-sys_old_select arch/m68k/include/asm/unistd.h
--- a/arch/m68k/include/asm/unistd.h~add-generic-sys_old_select
+++ a/arch/m68k/include/asm/unistd.h
@@ -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
diff -puN arch/m68k/kernel/entry.S~add-generic-sys_old_select arch/m68k/kernel/entry.S
--- a/arch/m68k/kernel/entry.S~add-generic-sys_old_select
+++ a/arch/m68k/kernel/entry.S
@@ -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 */
diff -puN arch/m68k/kernel/sys_m68k.c~add-generic-sys_old_select arch/m68k/kernel/sys_m68k.c
--- a/arch/m68k/kernel/sys_m68k.c~add-generic-sys_old_select
+++ a/arch/m68k/kernel/sys_m68k.c
@@ -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..
  *
diff -puN arch/m68knommu/kernel/sys_m68k.c~add-generic-sys_old_select arch/m68knommu/kernel/sys_m68k.c
--- a/arch/m68knommu/kernel/sys_m68k.c~add-generic-sys_old_select
+++ a/arch/m68knommu/kernel/sys_m68k.c
@@ -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..
  *
diff -puN arch/m68knommu/kernel/syscalltable.S~add-generic-sys_old_select arch/m68knommu/kernel/syscalltable.S
--- a/arch/m68knommu/kernel/syscalltable.S~add-generic-sys_old_select
+++ a/arch/m68knommu/kernel/syscalltable.S
@@ -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 */
diff -puN arch/mn10300/include/asm/unistd.h~add-generic-sys_old_select arch/mn10300/include/asm/unistd.h
--- a/arch/mn10300/include/asm/unistd.h~add-generic-sys_old_select
+++ a/arch/mn10300/include/asm/unistd.h
@@ -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
diff -puN arch/mn10300/kernel/entry.S~add-generic-sys_old_select arch/mn10300/kernel/entry.S
--- a/arch/mn10300/kernel/entry.S~add-generic-sys_old_select
+++ a/arch/mn10300/kernel/entry.S
@@ -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 */
diff -puN arch/mn10300/kernel/sys_mn10300.c~add-generic-sys_old_select arch/mn10300/kernel/sys_mn10300.c
--- a/arch/mn10300/kernel/sys_mn10300.c~add-generic-sys_old_select
+++ a/arch/mn10300/kernel/sys_mn10300.c
@@ -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..
  *
diff -puN arch/s390/kernel/entry.h~add-generic-sys_old_select arch/s390/kernel/entry.h
--- a/arch/s390/kernel/entry.h~add-generic-sys_old_select
+++ a/arch/s390/kernel/entry.h
@@ -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);
diff -puN arch/um/sys-i386/syscalls.c~add-generic-sys_old_select arch/um/sys-i386/syscalls.c
--- a/arch/um/sys-i386/syscalls.c~add-generic-sys_old_select
+++ a/arch/um/sys-i386/syscalls.c
@@ -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:
  *
diff -puN arch/x86/ia32/ia32entry.S~add-generic-sys_old_select arch/x86/ia32/ia32entry.S
--- a/arch/x86/ia32/ia32entry.S~add-generic-sys_old_select
+++ a/arch/x86/ia32/ia32entry.S
@@ -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 */
diff -puN arch/x86/ia32/sys_ia32.c~add-generic-sys_old_select arch/x86/ia32/sys_ia32.c
--- a/arch/x86/ia32/sys_ia32.c~add-generic-sys_old_select
+++ a/arch/x86/ia32/sys_ia32.c
@@ -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)
 {
diff -puN arch/x86/include/asm/sys_ia32.h~add-generic-sys_old_select arch/x86/include/asm/sys_ia32.h
--- a/arch/x86/include/asm/sys_ia32.h~add-generic-sys_old_select
+++ a/arch/x86/include/asm/sys_ia32.h
@@ -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);
 
diff -puN arch/x86/include/asm/syscalls.h~add-generic-sys_old_select arch/x86/include/asm/syscalls.h
--- a/arch/x86/include/asm/syscalls.h~add-generic-sys_old_select
+++ a/arch/x86/include/asm/syscalls.h
@@ -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 *);
diff -puN arch/x86/include/asm/unistd_32.h~add-generic-sys_old_select arch/x86/include/asm/unistd_32.h
--- a/arch/x86/include/asm/unistd_32.h~add-generic-sys_old_select
+++ a/arch/x86/include/asm/unistd_32.h
@@ -370,6 +370,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
diff -puN arch/x86/kernel/sys_i386_32.c~add-generic-sys_old_select arch/x86/kernel/sys_i386_32.c
--- a/arch/x86/kernel/sys_i386_32.c~add-generic-sys_old_select
+++ a/arch/x86/kernel/sys_i386_32.c
@@ -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..
  *
diff -puN arch/x86/kernel/syscall_table_32.S~add-generic-sys_old_select arch/x86/kernel/syscall_table_32.S
--- a/arch/x86/kernel/syscall_table_32.S~add-generic-sys_old_select
+++ a/arch/x86/kernel/syscall_table_32.S
@@ -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 */
diff -puN fs/compat.c~add-generic-sys_old_select fs/compat.c
--- a/fs/compat.c~add-generic-sys_old_select
+++ a/fs/compat.c
@@ -1794,6 +1794,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,
diff -puN fs/select.c~add-generic-sys_old_select fs/select.c
--- a/fs/select.c~add-generic-sys_old_select
+++ a/fs/select.c
@@ -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;
diff -puN include/linux/compat.h~add-generic-sys_old_select include/linux/compat.h
--- a/include/linux/compat.h~add-generic-sys_old_select
+++ a/include/linux/compat.h
@@ -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);
diff -puN include/linux/syscalls.h~add-generic-sys_old_select include/linux/syscalls.h
--- a/include/linux/syscalls.h~add-generic-sys_old_select
+++ a/include/linux/syscalls.h
@@ -34,6 +34,7 @@ struct pollfd;
 struct rlimit;
 struct rusage;
 struct sched_param;
+struct sel_arg_struct;
 struct semaphore;
 struct sembuf;
 struct shmid_ds;
@@ -636,6 +637,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,
_

Patches currently in -mm which might be from hch@xxxxxx are

linux-next.patch
vfs-fix-vfs_rename_dir-for-fs_rename_does_d_move-filesystems.patch
xtensa-convert-to-asm-generic-hardirqh.patch
add-generic-sys_old_select.patch
add-generic-sys_old_mmap.patch
add-generic-sys_ipc-wrapper.patch
improve-sys_personality-for-compat-architectures.patch
improve-sys_newuname-for-compat-architectures.patch
add-generic-sys_olduname.patch

--
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux