|
@@ -434,62 +434,6 @@ asmlinkage long sys32_rt_sigqueueinfo(int pid, int sig,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_SYSCTL_SYSCALL
|
|
|
-struct sysctl_ia32 {
|
|
|
- unsigned int name;
|
|
|
- int nlen;
|
|
|
- unsigned int oldval;
|
|
|
- unsigned int oldlenp;
|
|
|
- unsigned int newval;
|
|
|
- unsigned int newlen;
|
|
|
- unsigned int __unused[4];
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-asmlinkage long sys32_sysctl(struct sysctl_ia32 __user *args32)
|
|
|
-{
|
|
|
- struct sysctl_ia32 a32;
|
|
|
- mm_segment_t old_fs = get_fs();
|
|
|
- void __user *oldvalp, *newvalp;
|
|
|
- size_t oldlen;
|
|
|
- int __user *namep;
|
|
|
- long ret;
|
|
|
-
|
|
|
- if (copy_from_user(&a32, args32, sizeof(a32)))
|
|
|
- return -EFAULT;
|
|
|
-
|
|
|
- /*
|
|
|
- * We need to pre-validate these because we have to disable
|
|
|
- * address checking before calling do_sysctl() because of
|
|
|
- * OLDLEN but we can't run the risk of the user specifying bad
|
|
|
- * addresses here. Well, since we're dealing with 32 bit
|
|
|
- * addresses, we KNOW that access_ok() will always succeed, so
|
|
|
- * this is an expensive NOP, but so what...
|
|
|
- */
|
|
|
- namep = compat_ptr(a32.name);
|
|
|
- oldvalp = compat_ptr(a32.oldval);
|
|
|
- newvalp = compat_ptr(a32.newval);
|
|
|
-
|
|
|
- if ((oldvalp && get_user(oldlen, (int __user *)compat_ptr(a32.oldlenp)))
|
|
|
- || !access_ok(VERIFY_WRITE, namep, 0)
|
|
|
- || !access_ok(VERIFY_WRITE, oldvalp, 0)
|
|
|
- || !access_ok(VERIFY_WRITE, newvalp, 0))
|
|
|
- return -EFAULT;
|
|
|
-
|
|
|
- set_fs(KERNEL_DS);
|
|
|
- lock_kernel();
|
|
|
- ret = do_sysctl(namep, a32.nlen, oldvalp, (size_t __user *)&oldlen,
|
|
|
- newvalp, (size_t) a32.newlen);
|
|
|
- unlock_kernel();
|
|
|
- set_fs(old_fs);
|
|
|
-
|
|
|
- if (oldvalp && put_user(oldlen, (int __user *)compat_ptr(a32.oldlenp)))
|
|
|
- return -EFAULT;
|
|
|
-
|
|
|
- return ret;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
/* warning: next two assume little endian */
|
|
|
asmlinkage long sys32_pread(unsigned int fd, char __user *ubuf, u32 count,
|
|
|
u32 poslo, u32 poshi)
|