
From: Anton Blanchard <anton@samba.org>

Create a cond_syscall for sys32_sysctl and make all architectures use it. 
Also fix the architectures that dont wrap their 32bit compat sysctl code.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/ia64/ia32/sys_ia32.c         |    6 ++----
 25-akpm/arch/mips/kernel/linux32.c        |    7 -------
 25-akpm/arch/parisc/kernel/sys_parisc32.c |    6 ------
 25-akpm/arch/ppc64/kernel/sys_ppc32.c     |    2 ++
 25-akpm/arch/s390/kernel/compat_linux.c   |    2 ++
 25-akpm/arch/x86_64/ia32/sys_ia32.c       |    6 ++----
 25-akpm/kernel/sys_ni.c                   |    1 +
 7 files changed, 9 insertions(+), 21 deletions(-)

diff -puN arch/ia64/ia32/sys_ia32.c~problems-disabling-sysctl arch/ia64/ia32/sys_ia32.c
--- 25/arch/ia64/ia32/sys_ia32.c~problems-disabling-sysctl	2005-01-23 01:36:32.413286280 -0800
+++ 25-akpm/arch/ia64/ia32/sys_ia32.c	2005-01-23 01:36:32.427284152 -0800
@@ -1973,10 +1973,10 @@ struct sysctl32 {
 	unsigned int	__unused[4];
 };
 
+#ifdef CONFIG_SYSCTL
 asmlinkage long
 sys32_sysctl (struct sysctl32 __user *args)
 {
-#ifdef CONFIG_SYSCTL
 	struct sysctl32 a32;
 	mm_segment_t old_fs = get_fs ();
 	void __user *oldvalp, *newvalp;
@@ -2015,10 +2015,8 @@ sys32_sysctl (struct sysctl32 __user *ar
 		return -EFAULT;
 
 	return ret;
-#else
-	return -ENOSYS;
-#endif
 }
+#endif
 
 asmlinkage long
 sys32_newuname (struct new_utsname __user *name)
diff -puN arch/mips/kernel/linux32.c~problems-disabling-sysctl arch/mips/kernel/linux32.c
--- 25/arch/mips/kernel/linux32.c~problems-disabling-sysctl	2005-01-23 01:36:32.415285976 -0800
+++ 25-akpm/arch/mips/kernel/linux32.c	2005-01-23 01:36:32.428284000 -0800
@@ -1194,13 +1194,6 @@ asmlinkage long sys32_sysctl(struct sysc
 	return error;
 }
 
-#else /* CONFIG_SYSCTL */
-
-asmlinkage long sys32_sysctl(struct sysctl_args32 *args)
-{
-	return -ENOSYS;
-}
-
 #endif /* CONFIG_SYSCTL */
 
 asmlinkage long sys32_newuname(struct new_utsname * name)
diff -puN arch/parisc/kernel/sys_parisc32.c~problems-disabling-sysctl arch/parisc/kernel/sys_parisc32.c
--- 25/arch/parisc/kernel/sys_parisc32.c~problems-disabling-sysctl	2005-01-23 01:36:32.416285824 -0800
+++ 25-akpm/arch/parisc/kernel/sys_parisc32.c	2005-01-23 01:36:32.429283848 -0800
@@ -165,12 +165,6 @@ asmlinkage long sys32_sysctl(struct __sy
 	return error;
 }
 
-#else /* CONFIG_SYSCTL */
-
-asmlinkage long sys32_sysctl(struct __sysctl_args *args)
-{
-	return -ENOSYS;
-}
 #endif /* CONFIG_SYSCTL */
 
 asmlinkage long sys32_sched_rr_get_interval(pid_t pid,
diff -puN arch/ppc64/kernel/sys_ppc32.c~problems-disabling-sysctl arch/ppc64/kernel/sys_ppc32.c
--- 25/arch/ppc64/kernel/sys_ppc32.c~problems-disabling-sysctl	2005-01-23 01:36:32.418285520 -0800
+++ 25-akpm/arch/ppc64/kernel/sys_ppc32.c	2005-01-23 01:36:32.430283696 -0800
@@ -1106,6 +1106,7 @@ asmlinkage long sys32_umask(u32 mask)
 	return sys_umask((int)mask);
 }
 
+#ifdef CONFIG_SYSCTL
 struct __sysctl_args32 {
 	u32 name;
 	int nlen;
@@ -1155,6 +1156,7 @@ asmlinkage long sys32_sysctl(struct __sy
 	}
 	return error;
 }
+#endif
 
 asmlinkage int sys32_olduname(struct oldold_utsname __user * name)
 {
diff -puN arch/s390/kernel/compat_linux.c~problems-disabling-sysctl arch/s390/kernel/compat_linux.c
--- 25/arch/s390/kernel/compat_linux.c~problems-disabling-sysctl	2005-01-23 01:36:32.419285368 -0800
+++ 25-akpm/arch/s390/kernel/compat_linux.c	2005-01-23 01:36:32.431283544 -0800
@@ -906,6 +906,7 @@ asmlinkage long sys32_adjtimex(struct ti
 	return ret;
 }
 
+#ifdef CONFIG_SYSCTL
 struct __sysctl_args32 {
 	u32 name;
 	int nlen;
@@ -953,6 +954,7 @@ asmlinkage long sys32_sysctl(struct __sy
 	}
 	return error;
 }
+#endif
 
 struct stat64_emu31 {
 	unsigned long long  st_dev;
diff -puN arch/x86_64/ia32/sys_ia32.c~problems-disabling-sysctl arch/x86_64/ia32/sys_ia32.c
--- 25/arch/x86_64/ia32/sys_ia32.c~problems-disabling-sysctl	2005-01-23 01:36:32.421285064 -0800
+++ 25-akpm/arch/x86_64/ia32/sys_ia32.c	2005-01-23 01:36:32.432283392 -0800
@@ -653,6 +653,7 @@ sys32_pause(void)
 }
 
 
+#ifdef CONFIG_SYSCTL
 struct sysctl_ia32 {
 	unsigned int	name;
 	int		nlen;
@@ -667,9 +668,6 @@ struct sysctl_ia32 {
 asmlinkage long
 sys32_sysctl(struct sysctl_ia32 __user *args32)
 {
-#ifndef CONFIG_SYSCTL
-	return -ENOSYS; 
-#else
 	struct sysctl_ia32 a32;
 	mm_segment_t old_fs = get_fs ();
 	void *oldvalp, *newvalp;
@@ -710,8 +708,8 @@ sys32_sysctl(struct sysctl_ia32 __user *
 		return -EFAULT;
 
 	return ret;
-#endif
 }
+#endif
 
 /* warning: next two assume little endian */ 
 asmlinkage long
diff -puN kernel/sys_ni.c~problems-disabling-sysctl kernel/sys_ni.c
--- 25/kernel/sys_ni.c~problems-disabling-sysctl	2005-01-23 01:36:32.422284912 -0800
+++ 25-akpm/kernel/sys_ni.c	2005-01-23 01:36:32.432283392 -0800
@@ -82,3 +82,4 @@ cond_syscall(sys_pciconfig_read)
 cond_syscall(sys_pciconfig_write)
 cond_syscall(sys_pciconfig_iobase)
 cond_syscall(sys32_ipc)
+cond_syscall(sys32_sysctl)
_
