Merge branch 'for-2.6.33' of git://linux-nfs.org/~bfields/linux
[safe/jmp/linux-2.6] / arch / parisc / kernel / sys_parisc32.c
index 4a8ca63..9779ece 100644 (file)
@@ -84,77 +84,6 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,
     return -ENOSYS;
 }
 
-#ifdef CONFIG_SYSCTL
-
-struct __sysctl_args32 {
-       u32 name;
-       int nlen;
-       u32 oldval;
-       u32 oldlenp;
-       u32 newval;
-       u32 newlen;
-       u32 __unused[4];
-};
-
-asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
-{
-#ifndef CONFIG_SYSCTL_SYSCALL
-       return -ENOSYS;
-#else
-       struct __sysctl_args32 tmp;
-       int error;
-       unsigned int oldlen32;
-       size_t oldlen, __user *oldlenp = NULL;
-       unsigned long addr = (((long __force)&args->__unused[0]) + 7) & ~7;
-
-       DBG(("sysctl32(%p)\n", args));
-
-       if (copy_from_user(&tmp, args, sizeof(tmp)))
-               return -EFAULT;
-
-       if (tmp.oldval && tmp.oldlenp) {
-               /* Duh, this is ugly and might not work if sysctl_args
-                  is in read-only memory, but do_sysctl does indirectly
-                  a lot of uaccess in both directions and we'd have to
-                  basically copy the whole sysctl.c here, and
-                  glibc's __sysctl uses rw memory for the structure
-                  anyway.  */
-               /* a possibly better hack than this, which will avoid the
-                * problem if the struct is read only, is to push the
-                * 'oldlen' value out to the user's stack instead. -PB
-                */
-               if (get_user(oldlen32, (u32 *)(u64)tmp.oldlenp))
-                       return -EFAULT;
-               oldlen = oldlen32;
-               if (put_user(oldlen, (size_t *)addr))
-                       return -EFAULT;
-               oldlenp = (size_t *)addr;
-       }
-
-       lock_kernel();
-       error = do_sysctl((int __user *)(u64)tmp.name, tmp.nlen,
-                         (void __user *)(u64)tmp.oldval, oldlenp,
-                         (void __user *)(u64)tmp.newval, tmp.newlen);
-       unlock_kernel();
-       if (oldlenp) {
-               if (!error) {
-                       if (get_user(oldlen, (size_t *)addr)) {
-                               error = -EFAULT;
-                       } else {
-                               oldlen32 = oldlen;
-                               if (put_user(oldlen32, (u32 *)(u64)tmp.oldlenp))
-                                       error = -EFAULT;
-                       }
-               }
-               if (copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused)))
-                       error = -EFAULT;
-       }
-       return error;
-#endif
-}
-
-#endif /* CONFIG_SYSCTL */
-
 asmlinkage long sys32_sched_rr_get_interval(pid_t pid,
        struct compat_timespec __user *interval)
 {