Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
[platform/kernel/linux-starfive.git] / net / netfilter / nf_nat_core.c
index 18319a6..e29e4cc 100644 (file)
@@ -1152,7 +1152,16 @@ static int __init nf_nat_init(void)
        WARN_ON(nf_nat_hook != NULL);
        RCU_INIT_POINTER(nf_nat_hook, &nat_hook);
 
-       return register_nf_nat_bpf();
+       ret = register_nf_nat_bpf();
+       if (ret < 0) {
+               RCU_INIT_POINTER(nf_nat_hook, NULL);
+               nf_ct_helper_expectfn_unregister(&follow_master_nat);
+               synchronize_net();
+               unregister_pernet_subsys(&nat_net_ops);
+               kvfree(nf_nat_bysource);
+       }
+
+       return ret;
 }
 
 static void __exit nf_nat_cleanup(void)