aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/netfilter/ipvs/ip_vs_app.c3
-rw-r--r--net/netfilter/ipvs/ip_vs_conn.c5
-rw-r--r--net/netfilter/ipvs/ip_vs_core.c4
-rw-r--r--net/netfilter/ipvs/ip_vs_ctl.c7
-rw-r--r--net/netfilter/ipvs/ip_vs_est.c3
-rw-r--r--net/netfilter/ipvs/ip_vs_ftp.c6
-rw-r--r--net/netfilter/ipvs/ip_vs_sync.c5
7 files changed, 1 insertions, 32 deletions
diff --git a/net/netfilter/ipvs/ip_vs_app.c b/net/netfilter/ipvs/ip_vs_app.c
index 286f46594e0e..5c48ffb60c28 100644
--- a/net/netfilter/ipvs/ip_vs_app.c
+++ b/net/netfilter/ipvs/ip_vs_app.c
@@ -582,9 +582,6 @@ static int __net_init __ip_vs_app_init(struct net *net)
582{ 582{
583 struct netns_ipvs *ipvs = net_ipvs(net); 583 struct netns_ipvs *ipvs = net_ipvs(net);
584 584
585 if (!net_eq(net, &init_net)) /* netns not enabled yet */
586 return -EPERM;
587
588 INIT_LIST_HEAD(&ipvs->app_list); 585 INIT_LIST_HEAD(&ipvs->app_list);
589 __mutex_init(&ipvs->app_mutex, "ipvs->app_mutex", &ipvs->app_key); 586 __mutex_init(&ipvs->app_mutex, "ipvs->app_mutex", &ipvs->app_key);
590 proc_net_fops_create(net, "ip_vs_app", 0, &ip_vs_app_fops); 587 proc_net_fops_create(net, "ip_vs_app", 0, &ip_vs_app_fops);
diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
index 28bdaf7c02f4..83233fe24a08 100644
--- a/net/netfilter/ipvs/ip_vs_conn.c
+++ b/net/netfilter/ipvs/ip_vs_conn.c
@@ -1234,8 +1234,6 @@ int __net_init __ip_vs_conn_init(struct net *net)
1234{ 1234{
1235 struct netns_ipvs *ipvs = net_ipvs(net); 1235 struct netns_ipvs *ipvs = net_ipvs(net);
1236 1236
1237 if (!net_eq(net, &init_net)) /* netns not enabled yet */
1238 return -EPERM;
1239 atomic_set(&ipvs->conn_count, 0); 1237 atomic_set(&ipvs->conn_count, 0);
1240 1238
1241 proc_net_fops_create(net, "ip_vs_conn", 0, &ip_vs_conn_fops); 1239 proc_net_fops_create(net, "ip_vs_conn", 0, &ip_vs_conn_fops);
@@ -1245,9 +1243,6 @@ int __net_init __ip_vs_conn_init(struct net *net)
1245 1243
1246static void __net_exit __ip_vs_conn_cleanup(struct net *net) 1244static void __net_exit __ip_vs_conn_cleanup(struct net *net)
1247{ 1245{
1248 if (!net_eq(net, &init_net)) /* netns not enabled yet */
1249 return;
1250
1251 /* flush all the connection entries first */ 1246 /* flush all the connection entries first */
1252 ip_vs_conn_flush(net); 1247 ip_vs_conn_flush(net);
1253 proc_net_remove(net, "ip_vs_conn"); 1248 proc_net_remove(net, "ip_vs_conn");
diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
index 9e10c7a0720a..f36a84f33efb 100644
--- a/net/netfilter/ipvs/ip_vs_core.c
+++ b/net/netfilter/ipvs/ip_vs_core.c
@@ -1877,10 +1877,6 @@ static int __net_init __ip_vs_init(struct net *net)
1877{ 1877{
1878 struct netns_ipvs *ipvs; 1878 struct netns_ipvs *ipvs;
1879 1879
1880 if (!net_eq(net, &init_net)) {
1881 pr_err("The final patch for enabling netns is missing\n");
1882 return -EPERM;
1883 }
1884 ipvs = net_generic(net, ip_vs_net_id); 1880 ipvs = net_generic(net, ip_vs_net_id);
1885 if (ipvs == NULL) { 1881 if (ipvs == NULL) {
1886 pr_err("%s(): no memory.\n", __func__); 1882 pr_err("%s(): no memory.\n", __func__);
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
index edf2b6dee972..09ca2ce2f2b7 100644
--- a/net/netfilter/ipvs/ip_vs_ctl.c
+++ b/net/netfilter/ipvs/ip_vs_ctl.c
@@ -2617,6 +2617,7 @@ static struct genl_family ip_vs_genl_family = {
2617 .name = IPVS_GENL_NAME, 2617 .name = IPVS_GENL_NAME,
2618 .version = IPVS_GENL_VERSION, 2618 .version = IPVS_GENL_VERSION,
2619 .maxattr = IPVS_CMD_MAX, 2619 .maxattr = IPVS_CMD_MAX,
2620 .netnsok = true, /* Make ipvsadm to work on netns */
2620}; 2621};
2621 2622
2622/* Policy used for first-level command attributes */ 2623/* Policy used for first-level command attributes */
@@ -3483,9 +3484,6 @@ int __net_init __ip_vs_control_init(struct net *net)
3483 struct netns_ipvs *ipvs = net_ipvs(net); 3484 struct netns_ipvs *ipvs = net_ipvs(net);
3484 struct ctl_table *tbl; 3485 struct ctl_table *tbl;
3485 3486
3486 if (!net_eq(net, &init_net)) /* netns not enabled yet */
3487 return -EPERM;
3488
3489 atomic_set(&ipvs->dropentry, 0); 3487 atomic_set(&ipvs->dropentry, 0);
3490 spin_lock_init(&ipvs->dropentry_lock); 3488 spin_lock_init(&ipvs->dropentry_lock);
3491 spin_lock_init(&ipvs->droppacket_lock); 3489 spin_lock_init(&ipvs->droppacket_lock);
@@ -3578,9 +3576,6 @@ static void __net_exit __ip_vs_control_cleanup(struct net *net)
3578{ 3576{
3579 struct netns_ipvs *ipvs = net_ipvs(net); 3577 struct netns_ipvs *ipvs = net_ipvs(net);
3580 3578
3581 if (!net_eq(net, &init_net)) /* netns not enabled yet */
3582 return;
3583
3584 ip_vs_trash_cleanup(net); 3579 ip_vs_trash_cleanup(net);
3585 ip_vs_kill_estimator(net, ipvs->tot_stats); 3580 ip_vs_kill_estimator(net, ipvs->tot_stats);
3586 cancel_delayed_work_sync(&ipvs->defense_work); 3581 cancel_delayed_work_sync(&ipvs->defense_work);
diff --git a/net/netfilter/ipvs/ip_vs_est.c b/net/netfilter/ipvs/ip_vs_est.c
index d13616b138cd..f560a05c965a 100644
--- a/net/netfilter/ipvs/ip_vs_est.c
+++ b/net/netfilter/ipvs/ip_vs_est.c
@@ -203,9 +203,6 @@ static int __net_init __ip_vs_estimator_init(struct net *net)
203{ 203{
204 struct netns_ipvs *ipvs = net_ipvs(net); 204 struct netns_ipvs *ipvs = net_ipvs(net);
205 205
206 if (!net_eq(net, &init_net)) /* netns not enabled yet */
207 return -EPERM;
208
209 INIT_LIST_HEAD(&ipvs->est_list); 206 INIT_LIST_HEAD(&ipvs->est_list);
210 spin_lock_init(&ipvs->est_lock); 207 spin_lock_init(&ipvs->est_lock);
211 setup_timer(&ipvs->est_timer, estimation_timer, (unsigned long)net); 208 setup_timer(&ipvs->est_timer, estimation_timer, (unsigned long)net);
diff --git a/net/netfilter/ipvs/ip_vs_ftp.c b/net/netfilter/ipvs/ip_vs_ftp.c
index 6a04f9ab9d0d..6b5dd6ddaae9 100644
--- a/net/netfilter/ipvs/ip_vs_ftp.c
+++ b/net/netfilter/ipvs/ip_vs_ftp.c
@@ -413,9 +413,6 @@ static int __net_init __ip_vs_ftp_init(struct net *net)
413 int i, ret; 413 int i, ret;
414 struct ip_vs_app *app = &ip_vs_ftp; 414 struct ip_vs_app *app = &ip_vs_ftp;
415 415
416 if (!net_eq(net, &init_net)) /* netns not enabled yet */
417 return -EPERM;
418
419 ret = register_ip_vs_app(net, app); 416 ret = register_ip_vs_app(net, app);
420 if (ret) 417 if (ret)
421 return ret; 418 return ret;
@@ -442,9 +439,6 @@ static void __ip_vs_ftp_exit(struct net *net)
442{ 439{
443 struct ip_vs_app *app = &ip_vs_ftp; 440 struct ip_vs_app *app = &ip_vs_ftp;
444 441
445 if (!net_eq(net, &init_net)) /* netns not enabled yet */
446 return;
447
448 unregister_ip_vs_app(net, app); 442 unregister_ip_vs_app(net, app);
449} 443}
450 444
diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
index b1780562c42b..d1adf988eb08 100644
--- a/net/netfilter/ipvs/ip_vs_sync.c
+++ b/net/netfilter/ipvs/ip_vs_sync.c
@@ -1659,9 +1659,6 @@ static int __net_init __ip_vs_sync_init(struct net *net)
1659{ 1659{
1660 struct netns_ipvs *ipvs = net_ipvs(net); 1660 struct netns_ipvs *ipvs = net_ipvs(net);
1661 1661
1662 if (!net_eq(net, &init_net)) /* netns not enabled yet */
1663 return -EPERM;
1664
1665 INIT_LIST_HEAD(&ipvs->sync_queue); 1662 INIT_LIST_HEAD(&ipvs->sync_queue);
1666 spin_lock_init(&ipvs->sync_lock); 1663 spin_lock_init(&ipvs->sync_lock);
1667 spin_lock_init(&ipvs->sync_buff_lock); 1664 spin_lock_init(&ipvs->sync_buff_lock);
@@ -1674,8 +1671,6 @@ static int __net_init __ip_vs_sync_init(struct net *net)
1674 1671
1675static void __ip_vs_sync_cleanup(struct net *net) 1672static void __ip_vs_sync_cleanup(struct net *net)
1676{ 1673{
1677 if (!net_eq(net, &init_net)) /* netns not enabled yet */
1678 return;
1679 stop_sync_thread(net, IP_VS_STATE_MASTER); 1674 stop_sync_thread(net, IP_VS_STATE_MASTER);
1680 stop_sync_thread(net, IP_VS_STATE_BACKUP); 1675 stop_sync_thread(net, IP_VS_STATE_BACKUP);
1681} 1676}