netns: make uplitev6 mib per/namespace
[GitHub/LineageOS/android_kernel_motorola_exynos9610.git] / net / ipv6 / af_inet6.c
index e09139122efefb08033260ae44c5eae42ce7ae8c..127b240d2d8161f918d6c5cdbeb15f7208e5cbf2 100644 (file)
@@ -806,13 +806,8 @@ static int __init init_ipv6_mibs(void)
        if (snmp_mib_init((void **)icmpv6msg_statistics,
                          sizeof(struct icmpv6msg_mib)) < 0)
                goto err_icmpmsg_mib;
-       if (snmp_mib_init((void **)udplite_stats_in6,
-                         sizeof (struct udp_mib)) < 0)
-               goto err_udplite_mib;
        return 0;
 
-err_udplite_mib:
-       snmp_mib_free((void **)icmpv6msg_statistics);
 err_icmpmsg_mib:
        snmp_mib_free((void **)icmpv6_statistics);
 err_icmp_mib:
@@ -827,7 +822,6 @@ static void cleanup_ipv6_mibs(void)
        snmp_mib_free((void **)ipv6_statistics);
        snmp_mib_free((void **)icmpv6_statistics);
        snmp_mib_free((void **)icmpv6msg_statistics);
-       snmp_mib_free((void **)udplite_stats_in6);
 }
 
 static int __net_init ipv6_init_mibs(struct net *net)
@@ -835,12 +829,20 @@ static int __net_init ipv6_init_mibs(struct net *net)
        if (snmp_mib_init((void **)net->mib.udp_stats_in6,
                          sizeof (struct udp_mib)) < 0)
                return -ENOMEM;
+       if (snmp_mib_init((void **)net->mib.udplite_stats_in6,
+                         sizeof (struct udp_mib)) < 0)
+               goto err_udplite_mib;
        return 0;
+
+err_udplite_mib:
+       snmp_mib_free((void **)net->mib.udp_stats_in6);
+       return -ENOMEM;
 }
 
 static void __net_exit ipv6_cleanup_mibs(struct net *net)
 {
        snmp_mib_free((void **)net->mib.udp_stats_in6);
+       snmp_mib_free((void **)net->mib.udplite_stats_in6);
 }
 
 static int inet6_net_init(struct net *net)