Re: [PATCH v2] netns: correctly use per-netns ipv4 sysctl_tcp_mem
From: Lin Ming <hidden>
Date: 2012-07-12 11:18:08
On Thu, Jul 12, 2012 at 5:33 PM, Huang Qiang [off-list ref] wrote:
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)
s/protocal/protocol/
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>