]> err.no Git - linux-2.6/blobdiff - net/ipv4/ipvs/ip_vs_lblc.c
[IPVS]: Don't leak sysctl tables if the scheduler registration fails.
[linux-2.6] / net / ipv4 / ipvs / ip_vs_lblc.c
index b843a11d7cf7c33ae187a8879841516e33927e31..ad89644ef5d27e797f9a188451dc4f5c315cce70 100644 (file)
@@ -580,9 +580,14 @@ static struct ip_vs_scheduler ip_vs_lblc_scheduler =
 
 static int __init ip_vs_lblc_init(void)
 {
+       int ret;
+
        INIT_LIST_HEAD(&ip_vs_lblc_scheduler.n_list);
        sysctl_header = register_sysctl_table(lblc_root_table);
-       return register_ip_vs_scheduler(&ip_vs_lblc_scheduler);
+       ret = register_ip_vs_scheduler(&ip_vs_lblc_scheduler);
+       if (ret)
+               unregister_sysctl_table(sysctl_header);
+       return ret;
 }