.ctl_name = KERN_OSTYPE,
.procname = "ostype",
.data = system_utsname.sysname,
- .maxlen = 64,
+ .maxlen = sizeof(system_utsname.sysname),
.mode = 0444,
.proc_handler = &proc_doutsstring,
.strategy = &sysctl_string,
.ctl_name = KERN_OSRELEASE,
.procname = "osrelease",
.data = system_utsname.release,
- .maxlen = 64,
+ .maxlen = sizeof(system_utsname.release),
.mode = 0444,
.proc_handler = &proc_doutsstring,
.strategy = &sysctl_string,
.ctl_name = KERN_VERSION,
.procname = "version",
.data = system_utsname.version,
- .maxlen = 64,
+ .maxlen = sizeof(system_utsname.version),
.mode = 0444,
.proc_handler = &proc_doutsstring,
.strategy = &sysctl_string,
.ctl_name = KERN_NODENAME,
.procname = "hostname",
.data = system_utsname.nodename,
- .maxlen = 64,
+ .maxlen = sizeof(system_utsname.nodename),
.mode = 0644,
.proc_handler = &proc_doutsstring,
.strategy = &sysctl_string,
.ctl_name = KERN_DOMAINNAME,
.procname = "domainname",
.data = system_utsname.domainname,
- .maxlen = 64,
+ .maxlen = sizeof(system_utsname.domainname),
.mode = 0644,
.proc_handler = &proc_doutsstring,
.strategy = &sysctl_string,
.ctl_name = KERN_MODPROBE,
.procname = "modprobe",
.data = &modprobe_path,
- .maxlen = 256,
+ .maxlen = KMOD_PATH_LEN,
.mode = 0644,
.proc_handler = &proc_dostring,
.strategy = &sysctl_string,
.ctl_name = KERN_HOTPLUG,
.procname = "hotplug",
.data = &hotplug_path,
- .maxlen = 256,
+ .maxlen = KMOD_PATH_LEN,
.mode = 0644,
.proc_handler = &proc_dostring,
.strategy = &sysctl_string,
.extra1 = (void *)&hugetlb_zero,
.extra2 = (void *)&hugetlb_infinity,
},
+ {
+ .ctl_name = VM_HUGETLB_GROUP,
+ .procname = "hugetlb_shm_group",
+ .data = &sysctl_hugetlb_shm_group,
+ .maxlen = sizeof(gid_t),
+ .mode = 0644,
+ .proc_handler = &proc_dointvec,
+ },
#endif
{
.ctl_name = VM_LOWER_ZONE_PROTECTION,
if(copy_to_user(buffer, table->data, len))
return -EFAULT;
if (len < *lenp) {
- if(put_user('\n', ((char *) buffer) + len))
+ if(put_user('\n', ((char __user *) buffer) + len))
return -EFAULT;
len++;
}
size_t left, len;
char buf[TMPBUFLEN], *p;
+ char __user *s = buffer;
if (!table->data || !table->maxlen || !*lenp ||
(filp->f_pos && !write)) {
if (write) {
while (left) {
char c;
- if (get_user(c,(char __user *) buffer))
+ if (get_user(c, s))
return -EFAULT;
if (!isspace(c))
break;
left--;
- buffer++;
+ s++;
}
if (!left)
break;
len = left;
if (len > sizeof(buf) - 1)
len = sizeof(buf) - 1;
- if(copy_from_user(buf, buffer, len))
+ if (copy_from_user(buf, s, len))
return -EFAULT;
buf[len] = 0;
p = buf;
break;
if (neg)
val = -val;
- buffer += len;
+ s += len;
left -= len;
if (conv(&neg, &lval, i, 1, data))
len = strlen(buf);
if (len > left)
len = left;
- if(copy_to_user(buffer, buf, len))
+ if(copy_to_user(s, buf, len))
return -EFAULT;
left -= len;
- buffer += len;
+ s += len;
}
}
if (!write && !first && left) {
- if(put_user('\n', (char *) buffer))
+ if(put_user('\n', s))
return -EFAULT;
- left--, buffer++;
+ left--, s++;
}
if (write) {
- p = (char *) buffer;
while (left) {
char c;
- if (get_user(c, p++))
+ if (get_user(c, s++))
return -EFAULT;
if (!isspace(c))
break;
int vleft, first=1, neg;
size_t len, left;
char buf[TMPBUFLEN], *p;
+ char __user *s = buffer;
if (!table->data || !table->maxlen || !*lenp ||
(filp->f_pos && !write)) {
if (write) {
while (left) {
char c;
- if (get_user(c, (char __user *) buffer))
+ if (get_user(c, s))
return -EFAULT;
if (!isspace(c))
break;
left--;
- buffer++;
+ s++;
}
if (!left)
break;
len = left;
if (len > TMPBUFLEN-1)
len = TMPBUFLEN-1;
- if (copy_from_user(buf, buffer, len))
+ if (copy_from_user(buf, s, len))
return -EFAULT;
buf[len] = 0;
p = buf;
break;
if (neg)
val = -val;
- buffer += len;
+ s += len;
left -= len;
if(neg)
len = strlen(buf);
if (len > left)
len = left;
- if(copy_to_user(buffer, buf, len))
+ if(copy_to_user(s, buf, len))
return -EFAULT;
left -= len;
- buffer += len;
+ s += len;
}
}
if (!write && !first && left) {
- if(put_user('\n', (char *) buffer))
+ if(put_user('\n', s))
return -EFAULT;
- left--, buffer++;
+ left--, s++;
}
if (write) {
- p = (char *) buffer;
while (left) {
char c;
- if (get_user(c, p++))
+ if (get_user(c, s++))
return -EFAULT;
if (!isspace(c))
break;
#else /* CONFIG_PROC_FS */
int proc_dostring(ctl_table *table, int write, struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}
static int proc_doutsstring(ctl_table *table, int write, struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}
int proc_dointvec(ctl_table *table, int write, struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}
int proc_dointvec_bset(ctl_table *table, int write, struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}
int proc_dointvec_minmax(ctl_table *table, int write, struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}
int proc_dointvec_jiffies(ctl_table *table, int write, struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}
int proc_dointvec_userhz_jiffies(ctl_table *table, int write, struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}
int proc_doulongvec_minmax(ctl_table *table, int write, struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}
int proc_doulongvec_ms_jiffies_minmax(ctl_table *table, int write,
struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}
len = table->maxlen;
if(copy_to_user(oldval, table->data, len))
return -EFAULT;
- if(put_user(0, ((char *) oldval) + len))
+ if(put_user(0, ((char __user *) oldval) + len))
return -EFAULT;
if(put_user(len, oldlenp))
return -EFAULT;
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen, void **context)
{
- int i, *vec, *min, *max;
- size_t length;
if (newval && newlen) {
+ int __user *vec = (int __user *) newval;
+ int *min = (int *) table->extra1;
+ int *max = (int *) table->extra2;
+ size_t length;
+ int i;
+
if (newlen % sizeof(int) != 0)
return -EINVAL;
newlen = table->maxlen;
length = newlen / sizeof(int);
- vec = (int *) newval;
- min = (int *) table->extra1;
- max = (int *) table->extra2;
-
for (i = 0; i < length; i++) {
int value;
if (get_user(value, vec + i))
if (olen!=sizeof(int))
return -EINVAL;
}
- if (put_user(*(int *)(table->data) / HZ, (int *)oldval) ||
+ if (put_user(*(int *)(table->data)/HZ, (int __user *)oldval) ||
(oldlenp && put_user(sizeof(int),oldlenp)))
return -EFAULT;
}
int new;
if (newlen != sizeof(int))
return -EINVAL;
- if (get_user(new, (int *)newval))
+ if (get_user(new, (int __user *)newval))
return -EFAULT;
*(int *)(table->data) = new*HZ;
}
}
int proc_dointvec_jiffies(ctl_table *table, int write, struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}
int proc_dointvec_userhz_jiffies(ctl_table *table, int write, struct file *filp,
- void *buffer, size_t *lenp)
+ void __user *buffer, size_t *lenp)
{
return -ENOSYS;
}