Re: [PATCH v2] netns: correctly use per-netns ipv4 sysctl_tcp_mem

2 messages, 2 authors, 2012-07-19 · open the first message on its own page

Re: [PATCH v2] netns: correctly use per-netns ipv4 sysctl_tcp_mem

From: David Miller <hidden>
Date: 2012-07-18 16:41:37

From: Huang Qiang <redacted>
Date: Thu, 12 Jul 2012 17:33:34 +0800
From: Yang Zhenzhang <redacted>

Now, kernel allows each net namespace to independently set up its levels
for tcp memory pressure thresholds.

But it seems there is a bug, as using the following steps:

[root@host socket]# lxc-start -n test -f config /bin/bash
[root@net-test socket]# ip route add default via 192.168.58.2
[root@net-test socket]# echo 0 0 0 > /proc/sys/net/ipv4/tcp_mem
[root@net-test socket]# scp root-Q0ErXNX1RuabR28l3DCWlg@public.gmane.org:/home/tcp_mem_test .

and it still can transport the "tcp_mem_test" file which we hope it
would not.

It's because inet_init() (net/ipv4/af_inet.c)initialize the tcp_prot.sysctl_mem:
tcp_prot.sysctl_mem = init_net.ipv4.sysctl_tcp_mem;

So when the protocal is TCP, sk->sk_prot->sysctl_mem(following code)
always use the ipv4 sysctl_tcp_mem of init_net namespace rather than
it's own net namespace.
This patch simply set "prot" equal to net->ipv4.sysctl_tcp_mem when
the protocol type is TCP.

Signed-off-by: Yang Zhenzhang <redacted>
Signed-off-by: Huang Qiang <redacted>
This patch doesn't apply cleanly to net-next, please respin it.

Thank you.

Re: [PATCH v2] netns: correctly use per-netns ipv4 sysctl_tcp_mem

From: Huang Qiang <hidden>
Date: 2012-07-19 02:30:42

On 2012-7-19 0:41, David Miller wrote:
From: Huang Qiang <redacted>
Date: Thu, 12 Jul 2012 17:33:34 +0800
quoted
From: Yang Zhenzhang <redacted>

Now, kernel allows each net namespace to independently set up its levels
for tcp memory pressure thresholds.

But it seems there is a bug, as using the following steps:

[root@host socket]# lxc-start -n test -f config /bin/bash
[root@net-test socket]# ip route add default via 192.168.58.2
[root@net-test socket]# echo 0 0 0 > /proc/sys/net/ipv4/tcp_mem
[root@net-test socket]# scp root@192.168.58.174:/home/tcp_mem_test .

and it still can transport the "tcp_mem_test" file which we hope it
would not.

It's because inet_init() (net/ipv4/af_inet.c)initialize the tcp_prot.sysctl_mem:
tcp_prot.sysctl_mem = init_net.ipv4.sysctl_tcp_mem;

So when the protocal is TCP, sk->sk_prot->sysctl_mem(following code)
always use the ipv4 sysctl_tcp_mem of init_net namespace rather than
it's own net namespace.
This patch simply set "prot" equal to net->ipv4.sysctl_tcp_mem when
the protocol type is TCP.

Signed-off-by: Yang Zhenzhang <redacted>
Signed-off-by: Huang Qiang <redacted>
This patch doesn't apply cleanly to net-next, please respin it.

Thank you.
Ok, I will send patch v3 for net-next. Thank you!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help