Signed-off-by: Denis V. Lunev <den@xxxxxxxxxx> Acked-by: Daniel Lezcano <dlezcano@xxxxxxxxxx> --- net/ipv6/icmp.c | 29 ++++++++++++++--------------- 1 files changed, 14 insertions(+), 15 deletions(-) diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c index 9f55a96..889769d 100644 --- a/net/ipv6/icmp.c +++ b/net/ipv6/icmp.c @@ -777,6 +777,17 @@ drop_no_count: return 0; } + +static void __net_exit icmpv6_sk_exit(struct net *net) +{ + int i; + + for_each_possible_cpu(i) { + sk_release_kernel(net->ipv6.icmp_sk[i]); + } + kfree(net->ipv6.icmp_sk); +} + /* * Special lock-class for __icmpv6_sk: */ @@ -785,7 +796,7 @@ static struct lock_class_key icmpv6_socket_sk_dst_lock_key; static int __net_init icmpv6_sk_init(struct net *net) { struct sock *sk; - int err, i, j; + int err, i; net->ipv6.icmp_sk = kzalloc(nr_cpu_ids * sizeof(struct sock *), GFP_KERNEL); @@ -827,23 +838,11 @@ static int __net_init icmpv6_sk_init(struct net *net) } return 0; - fail: - for (j = 0; j < i; j++) - sk_release_kernel(net->ipv6.icmp_sk[j]); - kfree(net->ipv6.icmp_sk); +fail: + icmpv6_sk_exit(net); return err; } -static void __net_exit icmpv6_sk_exit(struct net *net) -{ - int i; - - for_each_possible_cpu(i) { - sk_release_kernel(net->ipv6.icmp_sk[i]); - } - kfree(net->ipv6.icmp_sk); -} - static struct pernet_operations __net_initdata icmpv6_sk_ops = { .init = icmpv6_sk_init, .exit = icmpv6_sk_exit, -- 1.5.3.rc5 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers