[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>
This commit is contained in:
parent
ee9f4b5d95
commit
17cca07237
1 changed files with 9 additions and 6 deletions
|
@ -111,13 +111,14 @@ struct __sysctl_args32 {
|
||||||
|
|
||||||
asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
|
asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
|
||||||
{
|
{
|
||||||
|
#ifndef CONFIG_SYSCTL_SYSCALL
|
||||||
|
return -ENOSYS;
|
||||||
|
#else
|
||||||
struct __sysctl_args32 tmp;
|
struct __sysctl_args32 tmp;
|
||||||
int error;
|
int error;
|
||||||
unsigned int oldlen32;
|
unsigned int oldlen32;
|
||||||
size_t oldlen, *oldlenp = NULL;
|
size_t oldlen, __user *oldlenp = NULL;
|
||||||
unsigned long addr = (((long __force)&args->__unused[0]) + 7) & ~7;
|
unsigned long addr = (((long __force)&args->__unused[0]) + 7) & ~7;
|
||||||
extern int do_sysctl(int *name, int nlen, void *oldval, size_t *oldlenp,
|
|
||||||
void *newval, size_t newlen);
|
|
||||||
|
|
||||||
DBG(("sysctl32(%p)\n", args));
|
DBG(("sysctl32(%p)\n", args));
|
||||||
|
|
||||||
|
@ -144,8 +145,9 @@ asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
|
||||||
}
|
}
|
||||||
|
|
||||||
lock_kernel();
|
lock_kernel();
|
||||||
error = do_sysctl((int *)(u64)tmp.name, tmp.nlen, (void *)(u64)tmp.oldval,
|
error = do_sysctl((int __user *)(u64)tmp.name, tmp.nlen,
|
||||||
oldlenp, (void *)(u64)tmp.newval, tmp.newlen);
|
(void __user *)(u64)tmp.oldval, oldlenp,
|
||||||
|
(void __user *)(u64)tmp.newval, tmp.newlen);
|
||||||
unlock_kernel();
|
unlock_kernel();
|
||||||
if (oldlenp) {
|
if (oldlenp) {
|
||||||
if (!error) {
|
if (!error) {
|
||||||
|
@ -157,10 +159,11 @@ asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
|
||||||
error = -EFAULT;
|
error = -EFAULT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (copy_to_user(&args->__unused[0], tmp.__unused, sizeof(tmp.__unused)))
|
if (copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused)))
|
||||||
error = -EFAULT;
|
error = -EFAULT;
|
||||||
}
|
}
|
||||||
return error;
|
return error;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_SYSCTL */
|
#endif /* CONFIG_SYSCTL */
|
||||||
|
|
Loading…
Reference in a new issue