mirror of
https://github.com/torvalds/linux.git
synced 2025-01-01 15:51:46 +00:00
IPVS: Allow compilation with CONFIG_SYSCTL disabled
This is a rather naieve approach to allowing PVS to compile with CONFIG_SYSCTL disabled. I am working on a more comprehensive patch which will remove compilation of all sysctl-related IPVS code when CONFIG_SYSCTL is disabled. Reported-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Simon Horman <horms@verge.net.au> Acked-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Hans Schillstrom <hans@schillstrom.com> Tested-by: Hans Schillstrom <hans@schillstrom.com> Signed-off-by: Patrick McHardy <kaber@trash.net>
This commit is contained in:
parent
a13676476e
commit
0443929ff0
@ -3552,10 +3552,15 @@ int __net_init __ip_vs_control_init(struct net *net)
|
||||
tbl[idx++].data = &ipvs->sysctl_nat_icmp_send;
|
||||
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
ipvs->sysctl_hdr = register_net_sysctl_table(net, net_vs_ctl_path,
|
||||
tbl);
|
||||
if (ipvs->sysctl_hdr == NULL)
|
||||
goto err_reg;
|
||||
if (ipvs->sysctl_hdr == NULL) {
|
||||
if (!net_eq(net, &init_net))
|
||||
kfree(tbl);
|
||||
goto err_dup;
|
||||
}
|
||||
#endif
|
||||
ip_vs_new_estimator(net, ipvs->tot_stats);
|
||||
ipvs->sysctl_tbl = tbl;
|
||||
/* Schedule defense work */
|
||||
@ -3563,9 +3568,6 @@ int __net_init __ip_vs_control_init(struct net *net)
|
||||
schedule_delayed_work(&ipvs->defense_work, DEFENSE_TIMER_PERIOD);
|
||||
return 0;
|
||||
|
||||
err_reg:
|
||||
if (!net_eq(net, &init_net))
|
||||
kfree(tbl);
|
||||
err_dup:
|
||||
free_percpu(ipvs->cpustats);
|
||||
err_alloc:
|
||||
@ -3581,7 +3583,9 @@ static void __net_exit __ip_vs_control_cleanup(struct net *net)
|
||||
ip_vs_kill_estimator(net, ipvs->tot_stats);
|
||||
cancel_delayed_work_sync(&ipvs->defense_work);
|
||||
cancel_work_sync(&ipvs->defense_work.work);
|
||||
#ifdef CONFIG_SYSCTL
|
||||
unregister_net_sysctl_table(ipvs->sysctl_hdr);
|
||||
#endif
|
||||
proc_net_remove(net, "ip_vs_stats_percpu");
|
||||
proc_net_remove(net, "ip_vs_stats");
|
||||
proc_net_remove(net, "ip_vs");
|
||||
|
@ -554,33 +554,33 @@ static int __net_init __ip_vs_lblc_init(struct net *net)
|
||||
sizeof(vs_vars_table),
|
||||
GFP_KERNEL);
|
||||
if (ipvs->lblc_ctl_table == NULL)
|
||||
goto err_dup;
|
||||
return -ENOMEM;
|
||||
} else
|
||||
ipvs->lblc_ctl_table = vs_vars_table;
|
||||
ipvs->sysctl_lblc_expiration = 24*60*60*HZ;
|
||||
ipvs->lblc_ctl_table[0].data = &ipvs->sysctl_lblc_expiration;
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
ipvs->lblc_ctl_header =
|
||||
register_net_sysctl_table(net, net_vs_ctl_path,
|
||||
ipvs->lblc_ctl_table);
|
||||
if (!ipvs->lblc_ctl_header)
|
||||
goto err_reg;
|
||||
if (!ipvs->lblc_ctl_header) {
|
||||
if (!net_eq(net, &init_net))
|
||||
kfree(ipvs->lblc_ctl_table);
|
||||
return -ENOMEM;
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
||||
err_reg:
|
||||
if (!net_eq(net, &init_net))
|
||||
kfree(ipvs->lblc_ctl_table);
|
||||
|
||||
err_dup:
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
static void __net_exit __ip_vs_lblc_exit(struct net *net)
|
||||
{
|
||||
struct netns_ipvs *ipvs = net_ipvs(net);
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
unregister_net_sysctl_table(ipvs->lblc_ctl_header);
|
||||
#endif
|
||||
|
||||
if (!net_eq(net, &init_net))
|
||||
kfree(ipvs->lblc_ctl_table);
|
||||
|
@ -754,33 +754,33 @@ static int __net_init __ip_vs_lblcr_init(struct net *net)
|
||||
sizeof(vs_vars_table),
|
||||
GFP_KERNEL);
|
||||
if (ipvs->lblcr_ctl_table == NULL)
|
||||
goto err_dup;
|
||||
return -ENOMEM;
|
||||
} else
|
||||
ipvs->lblcr_ctl_table = vs_vars_table;
|
||||
ipvs->sysctl_lblcr_expiration = 24*60*60*HZ;
|
||||
ipvs->lblcr_ctl_table[0].data = &ipvs->sysctl_lblcr_expiration;
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
ipvs->lblcr_ctl_header =
|
||||
register_net_sysctl_table(net, net_vs_ctl_path,
|
||||
ipvs->lblcr_ctl_table);
|
||||
if (!ipvs->lblcr_ctl_header)
|
||||
goto err_reg;
|
||||
if (!ipvs->lblcr_ctl_header) {
|
||||
if (!net_eq(net, &init_net))
|
||||
kfree(ipvs->lblcr_ctl_table);
|
||||
return -ENOMEM;
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
||||
err_reg:
|
||||
if (!net_eq(net, &init_net))
|
||||
kfree(ipvs->lblcr_ctl_table);
|
||||
|
||||
err_dup:
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
static void __net_exit __ip_vs_lblcr_exit(struct net *net)
|
||||
{
|
||||
struct netns_ipvs *ipvs = net_ipvs(net);
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
unregister_net_sysctl_table(ipvs->lblcr_ctl_header);
|
||||
#endif
|
||||
|
||||
if (!net_eq(net, &init_net))
|
||||
kfree(ipvs->lblcr_ctl_table);
|
||||
|
Loading…
Reference in New Issue
Block a user