|
@@ -204,43 +204,8 @@ static int ipv4_tcp_mem(struct ctl_table *ctl, int write,
|
|
|
void __user *buffer, size_t *lenp,
|
|
|
loff_t *ppos)
|
|
|
{
|
|
|
- int ret;
|
|
|
- unsigned long vec[3];
|
|
|
- struct net *net = current->nsproxy->net_ns;
|
|
|
-#ifdef CONFIG_MEMCG_KMEM
|
|
|
- struct mem_cgroup *memcg;
|
|
|
-#endif
|
|
|
-
|
|
|
- struct ctl_table tmp = {
|
|
|
- .data = &vec,
|
|
|
- .maxlen = sizeof(vec),
|
|
|
- .mode = ctl->mode,
|
|
|
- };
|
|
|
-
|
|
|
- if (!write) {
|
|
|
- ctl->data = &net->ipv4.sysctl_tcp_mem;
|
|
|
- return proc_doulongvec_minmax(ctl, write, buffer, lenp, ppos);
|
|
|
- }
|
|
|
-
|
|
|
- ret = proc_doulongvec_minmax(&tmp, write, buffer, lenp, ppos);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
-
|
|
|
-#ifdef CONFIG_MEMCG_KMEM
|
|
|
- rcu_read_lock();
|
|
|
- memcg = mem_cgroup_from_task(current);
|
|
|
-
|
|
|
- tcp_prot_mem(memcg, vec[0], 0);
|
|
|
- tcp_prot_mem(memcg, vec[1], 1);
|
|
|
- tcp_prot_mem(memcg, vec[2], 2);
|
|
|
- rcu_read_unlock();
|
|
|
-#endif
|
|
|
-
|
|
|
- net->ipv4.sysctl_tcp_mem[0] = vec[0];
|
|
|
- net->ipv4.sysctl_tcp_mem[1] = vec[1];
|
|
|
- net->ipv4.sysctl_tcp_mem[2] = vec[2];
|
|
|
-
|
|
|
- return 0;
|
|
|
+ ctl->data = ¤t->nsproxy->net_ns->ipv4.sysctl_tcp_mem;
|
|
|
+ return proc_doulongvec_minmax(ctl, write, buffer, lenp, ppos);
|
|
|
}
|
|
|
|
|
|
static int proc_tcp_fastopen_key(struct ctl_table *ctl, int write,
|