inet: frags: change inet_frags_init_net() return value
[GitHub/moto-9609/android_kernel_motorola_exynos9610.git] / net / ipv6 / reassembly.c
index 846012eae52680e00108deb65c356f5024f94552..38bf38a9717f0ea9f470d07e596ac03a17241e0a 100644 (file)
@@ -714,13 +714,20 @@ static void ip6_frags_sysctl_unregister(void)
 
 static int __net_init ipv6_frags_init_net(struct net *net)
 {
+       int res;
+
        net->ipv6.frags.high_thresh = IPV6_FRAG_HIGH_THRESH;
        net->ipv6.frags.low_thresh = IPV6_FRAG_LOW_THRESH;
        net->ipv6.frags.timeout = IPV6_FRAG_TIMEOUT;
 
-       inet_frags_init_net(&net->ipv6.frags);
+       res = inet_frags_init_net(&net->ipv6.frags);
+       if (res < 0)
+               return res;
 
-       return ip6_frags_ns_sysctl_register(net);
+       res = ip6_frags_ns_sysctl_register(net);
+       if (res < 0)
+               inet_frags_exit_net(&net->ipv6.frags, &ip6_frags);
+       return res;
 }
 
 static void __net_exit ipv6_frags_exit_net(struct net *net)