Merge git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6: (43 commits) security/tomoyo: Remove now unnecessary handling of security_sysctl. security/tomoyo: Add a special case to handle accesses through the internal proc mount. sysctl: Drop & in front of every proc_handler. sysctl: Remove CTL_NONE and CTL_UNNUMBERED sysctl: kill dead ctl_handler definitions. sysctl: Remove the last of the generic binary sysctl support sysctl net: Remove unused binary sysctl code sysctl security/tomoyo: Don't look at ctl_name sysctl arm: Remove binary sysctl support sysctl x86: Remove dead binary sysctl support sysctl sh: Remove dead binary sysctl support sysctl powerpc: Remove dead binary sysctl support sysctl ia64: Remove dead binary sysctl support sysctl s390: Remove dead sysctl binary support sysctl frv: Remove dead binary sysctl support sysctl mips/lasat: Remove dead binary sysctl support sysctl drivers: Remove dead binary sysctl support sysctl crypto: Remove dead binary sysctl support sysctl security/keys: Remove dead binary sysctl support sysctl kernel: Remove binary sysctl logic ...
This commit is contained in:
@@ -110,18 +110,16 @@ int powersave_nap;
|
||||
*/
|
||||
static ctl_table powersave_nap_ctl_table[]={
|
||||
{
|
||||
.ctl_name = KERN_PPC_POWERSAVE_NAP,
|
||||
.procname = "powersave-nap",
|
||||
.data = &powersave_nap,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{}
|
||||
};
|
||||
static ctl_table powersave_nap_sysctl_root[] = {
|
||||
{
|
||||
.ctl_name = CTL_KERN,
|
||||
.procname = "kernel",
|
||||
.mode = 0555,
|
||||
.child = powersave_nap_ctl_table,
|
||||
|
@@ -520,58 +520,6 @@ asmlinkage long compat_sys_umask(u32 mask)
|
||||
return sys_umask((int)mask);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYSCTL_SYSCALL
|
||||
struct __sysctl_args32 {
|
||||
u32 name;
|
||||
int nlen;
|
||||
u32 oldval;
|
||||
u32 oldlenp;
|
||||
u32 newval;
|
||||
u32 newlen;
|
||||
u32 __unused[4];
|
||||
};
|
||||
|
||||
asmlinkage long compat_sys_sysctl(struct __sysctl_args32 __user *args)
|
||||
{
|
||||
struct __sysctl_args32 tmp;
|
||||
int error;
|
||||
size_t oldlen;
|
||||
size_t __user *oldlenp = NULL;
|
||||
unsigned long addr = (((unsigned long)&args->__unused[0]) + 7) & ~7;
|
||||
|
||||
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. */
|
||||
oldlenp = (size_t __user *)addr;
|
||||
if (get_user(oldlen, (compat_size_t __user *)compat_ptr(tmp.oldlenp)) ||
|
||||
put_user(oldlen, oldlenp))
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
lock_kernel();
|
||||
error = do_sysctl(compat_ptr(tmp.name), tmp.nlen,
|
||||
compat_ptr(tmp.oldval), oldlenp,
|
||||
compat_ptr(tmp.newval), tmp.newlen);
|
||||
unlock_kernel();
|
||||
if (oldlenp) {
|
||||
if (!error) {
|
||||
if (get_user(oldlen, oldlenp) ||
|
||||
put_user(oldlen, (compat_size_t __user *)compat_ptr(tmp.oldlenp)))
|
||||
error = -EFAULT;
|
||||
}
|
||||
copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused));
|
||||
}
|
||||
return error;
|
||||
}
|
||||
#endif
|
||||
|
||||
unsigned long compat_sys_mmap2(unsigned long addr, size_t len,
|
||||
unsigned long prot, unsigned long flags,
|
||||
unsigned long fd, unsigned long pgoff)
|
||||
|
Reference in New Issue
Block a user