[PA-RISC] Fix sys32_sysctl

When CONFIG_SYSCTL_SYSCALL isn't defined, do_sysctl doesn't exist and
we fail to link. Fix with an ifdef, the same way sparc64 did.
Also add some minor changes to be more like sparc64.

Signed-off-by: Matthew Wilcox <matthew@wil.cx>

authored by Matthew Wilcox and committed by Matthew Wilcox 17cca072 ee9f4b5d

+9 -6
+9 -6
arch/parisc/kernel/sys_parisc32.c
··· 111 112 asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args) 113 { 114 struct __sysctl_args32 tmp; 115 int error; 116 unsigned int oldlen32; 117 - size_t oldlen, *oldlenp = NULL; 118 unsigned long addr = (((long __force)&args->__unused[0]) + 7) & ~7; 119 - extern int do_sysctl(int *name, int nlen, void *oldval, size_t *oldlenp, 120 - void *newval, size_t newlen); 121 122 DBG(("sysctl32(%p)\n", args)); 123 ··· 145 } 146 147 lock_kernel(); 148 - error = do_sysctl((int *)(u64)tmp.name, tmp.nlen, (void *)(u64)tmp.oldval, 149 - oldlenp, (void *)(u64)tmp.newval, tmp.newlen); 150 unlock_kernel(); 151 if (oldlenp) { 152 if (!error) { ··· 159 error = -EFAULT; 160 } 161 } 162 - if (copy_to_user(&args->__unused[0], tmp.__unused, sizeof(tmp.__unused))) 163 error = -EFAULT; 164 } 165 return error; 166 } 167 168 #endif /* CONFIG_SYSCTL */
··· 111 112 asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args) 113 { 114 + #ifndef CONFIG_SYSCTL_SYSCALL 115 + return -ENOSYS; 116 + #else 117 struct __sysctl_args32 tmp; 118 int error; 119 unsigned int oldlen32; 120 + size_t oldlen, __user *oldlenp = NULL; 121 unsigned long addr = (((long __force)&args->__unused[0]) + 7) & ~7; 122 123 DBG(("sysctl32(%p)\n", args)); 124 ··· 144 } 145 146 lock_kernel(); 147 + error = do_sysctl((int __user *)(u64)tmp.name, tmp.nlen, 148 + (void __user *)(u64)tmp.oldval, oldlenp, 149 + (void __user *)(u64)tmp.newval, tmp.newlen); 150 unlock_kernel(); 151 if (oldlenp) { 152 if (!error) { ··· 157 error = -EFAULT; 158 } 159 } 160 + if (copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused))) 161 error = -EFAULT; 162 } 163 return error; 164 + #endif 165 } 166 167 #endif /* CONFIG_SYSCTL */