diff options
author | Denis V. Lunev <den@openvz.org> | 2008-01-19 02:54:15 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:08:06 -0500 |
commit | 4f84d82f7a623f8641af2574425c329431ff158f (patch) | |
tree | 639acc6831d8d99d4ca4c2a5ec3c78831b41c084 | |
parent | 869e58f87094b1e8a0df49232e4a5172678d46c9 (diff) |
[NETNS]: Memory leak on network namespace stop.
Network namespace allocates 2 kernel netlink sockets, fibnl &
rtnl. These sockets should be disposed properly, i.e. by
sock_release. Plain sock_put is not enough.
Signed-off-by: Denis V. Lunev <den@openvz.org>
Tested-by: Alexey Dobriyan <adobriyan@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/core/rtnetlink.c | 2 | ||||
-rw-r--r-- | net/ipv4/fib_frontend.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 8c45d7e35ee9..a5f4f661fa62 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -1384,7 +1384,7 @@ static void rtnetlink_net_exit(struct net *net) | |||
1384 | * free. | 1384 | * free. |
1385 | */ | 1385 | */ |
1386 | sk->sk_net = get_net(&init_net); | 1386 | sk->sk_net = get_net(&init_net); |
1387 | sock_put(sk); | 1387 | sock_release(net->rtnl->sk_socket); |
1388 | net->rtnl = NULL; | 1388 | net->rtnl = NULL; |
1389 | } | 1389 | } |
1390 | } | 1390 | } |
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 8ddcd3f91a17..4e5216e9aacb 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c | |||
@@ -881,7 +881,7 @@ static void nl_fib_lookup_exit(struct net *net) | |||
881 | * initial network namespace. So the socket will be safe to free. | 881 | * initial network namespace. So the socket will be safe to free. |
882 | */ | 882 | */ |
883 | net->ipv4.fibnl->sk_net = get_net(&init_net); | 883 | net->ipv4.fibnl->sk_net = get_net(&init_net); |
884 | sock_put(net->ipv4.fibnl); | 884 | sock_release(net->ipv4.fibnl->sk_socket); |
885 | } | 885 | } |
886 | 886 | ||
887 | static void fib_disable_ip(struct net_device *dev, int force) | 887 | static void fib_disable_ip(struct net_device *dev, int force) |