2011-02-01 10:08:07

by Simon Horman

[permalink] [raw]
Subject: [GIT PULL nf-next-2.6 v2] IPVS build fixes and clean-ups

This short patch series addresses two linux-next build problems
raised by Randy Dunlap:

* net/netfilter/ipvs/ip_vs_core.c:1891: warning: format '%lu' expects type 'long unsigned int', but argument 2 has type 'unsigned int'
* ERROR: "unregister_net_sysctl_table" [net/netfilter/ipvs/ip_vs.ko]
ERROR: "register_net_sysctl_table" [net/netfilter/ipvs/ip_vs.ko] undefined!
* WARNING: net/netfilter/ipvs/ip_vs.o(.init.text+0x161): Section mismatch in reference from the function init_module() to the function .exit.text:ip_vs_sync_cleanup()

The remainder of the changsets are cleanups that I noticed along the way.

The changes are available at
git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-test-2.6.git master

They are currently compile-tested only.


include/net/ip_vs.h | 2 --
net/netfilter/ipvs/ip_vs_core.c | 2 +-
net/netfilter/ipvs/ip_vs_ctl.c | 17 +++++++++--------
net/netfilter/ipvs/ip_vs_lblc.c | 20 ++++++++++----------
net/netfilter/ipvs/ip_vs_lblcr.c | 20 ++++++++++----------
net/netfilter/ipvs/ip_vs_sync.c | 2 +-
6 files changed, 31 insertions(+), 32 deletions(-)


2011-02-01 10:08:08

by Simon Horman

[permalink] [raw]
Subject: [PATCH 2/5] IPVS: remove duplicate initialisation or rs_table

Cc: Hans Schillstrom <[email protected]>
Signed-off-by: Simon Horman <[email protected]>
---
net/netfilter/ipvs/ip_vs_ctl.c | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
index 98df59a..d7c2fa8 100644
--- a/net/netfilter/ipvs/ip_vs_ctl.c
+++ b/net/netfilter/ipvs/ip_vs_ctl.c
@@ -3515,9 +3515,6 @@ int __net_init __ip_vs_control_init(struct net *net)
}
spin_lock_init(&ipvs->tot_stats->lock);

- for (idx = 0; idx < IP_VS_RTAB_SIZE; idx++)
- INIT_LIST_HEAD(&ipvs->rs_table[idx]);
-
proc_net_fops_create(net, "ip_vs", 0, &ip_vs_info_fops);
proc_net_fops_create(net, "ip_vs_stats", 0, &ip_vs_stats_fops);
proc_net_fops_create(net, "ip_vs_stats_percpu", 0,
--
1.7.2.3

2011-02-01 10:08:07

by Simon Horman

[permalink] [raw]
Subject: [PATCH 3/5] IPVS: Remove unused variables

These variables are unused as a result of the recent netns work.

Cc: Hans Schillstrom <[email protected]>
Signed-off-by: Simon Horman <[email protected]>
---
include/net/ip_vs.h | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
index b23bea6..5d75fea 100644
--- a/include/net/ip_vs.h
+++ b/include/net/ip_vs.h
@@ -1109,8 +1109,6 @@ extern int ip_vs_icmp_xmit_v6
* we are loaded. Just set ip_vs_drop_rate to 'n' and
* we start to drop 1/rate of the packets
*/
-extern int ip_vs_drop_rate;
-extern int ip_vs_drop_counter;

static inline int ip_vs_todrop(struct netns_ipvs *ipvs)
{
--
1.7.2.3

2011-02-01 10:08:05

by Simon Horman

[permalink] [raw]
Subject: [PATCH 1/5] IPVS: use z modifier for sizeof() argument

Cc: Hans Schillstrom <[email protected]>
Reported-by: Randy Dunlap <[email protected]>
Signed-off-by: Simon Horman <[email protected]>
---
net/netfilter/ipvs/ip_vs_core.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
index d889f4f..4d06617 100644
--- a/net/netfilter/ipvs/ip_vs_core.c
+++ b/net/netfilter/ipvs/ip_vs_core.c
@@ -1887,7 +1887,7 @@ static int __net_init __ip_vs_init(struct net *net)
ipvs->gen = atomic_read(&ipvs_netns_cnt);
atomic_inc(&ipvs_netns_cnt);
net->ipvs = ipvs;
- printk(KERN_INFO "IPVS: Creating netns size=%lu id=%d\n",
+ printk(KERN_INFO "IPVS: Creating netns size=%zu id=%d\n",
sizeof(struct netns_ipvs), ipvs->gen);
return 0;
}
--
1.7.2.3

2011-02-01 10:09:13

by Simon Horman

[permalink] [raw]
Subject: [PATCH 4/5] 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.

Cc: Hans Schillstrom <[email protected]>
Reported-by: Randy Dunlap <[email protected]>
Signed-off-by: Simon Horman <[email protected]>
---
net/netfilter/ipvs/ip_vs_ctl.c | 14 +++++++++-----
net/netfilter/ipvs/ip_vs_lblc.c | 20 ++++++++++----------
net/netfilter/ipvs/ip_vs_lblcr.c | 20 ++++++++++----------
3 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
index d7c2fa8..c73b0c8 100644
--- a/net/netfilter/ipvs/ip_vs_ctl.c
+++ b/net/netfilter/ipvs/ip_vs_ctl.c
@@ -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");
diff --git a/net/netfilter/ipvs/ip_vs_lblc.c b/net/netfilter/ipvs/ip_vs_lblc.c
index d5bec33..00b5ffa 100644
--- a/net/netfilter/ipvs/ip_vs_lblc.c
+++ b/net/netfilter/ipvs/ip_vs_lblc.c
@@ -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);
diff --git a/net/netfilter/ipvs/ip_vs_lblcr.c b/net/netfilter/ipvs/ip_vs_lblcr.c
index 61ae8cf..bfa25f1 100644
--- a/net/netfilter/ipvs/ip_vs_lblcr.c
+++ b/net/netfilter/ipvs/ip_vs_lblcr.c
@@ -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);
--
1.7.2.3

2011-02-01 10:09:15

by Simon Horman

[permalink] [raw]
Subject: [PATCH 5/5] IPVS: Remove ip_vs_sync_cleanup from section __exit

ip_vs_sync_cleanup() may be called from ip_vs_init() on error
and thus needs to be accesible from section __init

Reporte-by: Randy Dunlap <[email protected]>
Signed-off-by: Simon Horman <[email protected]>
---
net/netfilter/ipvs/ip_vs_sync.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
index d5a6e64..2a2a836 100644
--- a/net/netfilter/ipvs/ip_vs_sync.c
+++ b/net/netfilter/ipvs/ip_vs_sync.c
@@ -1686,7 +1686,7 @@ int __init ip_vs_sync_init(void)
return register_pernet_subsys(&ipvs_sync_ops);
}

-void __exit ip_vs_sync_cleanup(void)
+void ip_vs_sync_cleanup(void)
{
unregister_pernet_subsys(&ipvs_sync_ops);
}
--
1.7.2.3

2011-02-01 13:24:26

by Patrick McHardy

[permalink] [raw]
Subject: Re: [GIT PULL nf-next-2.6 v2] IPVS build fixes and clean-ups

On 01.02.2011 11:07, Simon Horman wrote:
> This short patch series addresses two linux-next build problems
> raised by Randy Dunlap:
>
> * net/netfilter/ipvs/ip_vs_core.c:1891: warning: format '%lu' expects type 'long unsigned int', but argument 2 has type 'unsigned int'
> * ERROR: "unregister_net_sysctl_table" [net/netfilter/ipvs/ip_vs.ko]
> ERROR: "register_net_sysctl_table" [net/netfilter/ipvs/ip_vs.ko] undefined!
> * WARNING: net/netfilter/ipvs/ip_vs.o(.init.text+0x161): Section mismatch in reference from the function init_module() to the function .exit.text:ip_vs_sync_cleanup()
>
> The remainder of the changsets are cleanups that I noticed along the way.
>
> The changes are available at
> git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-test-2.6.git master
>
> They are currently compile-tested only.

Just to avoid any confusion, do you want me to pull these patches
already?

2011-02-01 13:37:16

by Hans Schillstrom

[permalink] [raw]
Subject: Re: [GIT PULL nf-next-2.6 v2] IPVS build fixes and clean-ups

>---- Original Message ----
>From: Simon Horman <[email protected]>
>To: [email protected], [email protected], [email protected], [email protected]
>Cc: "Randy Dunlap" <[email protected]>, "Stephen Rothwell" <[email protected]>, "Hans Schillstrom" <[email protected]>, "Patrick McHardy" <[email protected]>
>Sent: Tue, Feb 1, 2011, 11:11 AM
>Subject: [GIT PULL nf-next-2.6 v2] IPVS build fixes and clean-ups
>
>This short patch series addresses two linux-next build problems
>raised by Randy Dunlap:
>
>* net/netfilter/ipvs/ip_vs_core.c:1891: warning: format '%lu' expects type 'long unsigned int', but argument 2 has type 'unsigned int'
>* ERROR: "unregister_net_sysctl_table" [net/netfilter/ipvs/ip_vs.ko]
> ERROR: "register_net_sysctl_table" [net/netfilter/ipvs/ip_vs.ko] undefined!
>* WARNING: net/netfilter/ipvs/ip_vs.o(.init.text+0x161): Section mismatch in reference from the function init_module() to the function .exit.text:ip_vs_sync_cleanup()
>
>The remainder of the changsets are cleanups that I noticed along the way.
>
>The changes are available at
>git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-test-2.6.git master
>
>They are currently compile-tested only.
>

I will try to test this today

Regards
Hans Schillstrom <[email protected]>

2011-02-01 17:06:16

by Hans Schillstrom

[permalink] [raw]
Subject: Re: [PATCH 1/5] IPVS: use z modifier for sizeof() argument

>---- Original Message ----
>From: Simon Horman <[email protected]>
>To: [email protected], [email protected], [email protected], [email protected]
>Cc: "Randy Dunlap" <[email protected]>, "Stephen Rothwell" <[email protected]>, "Hans Schillstrom" <[email protected]>, "Patrick McHardy" <[email protected]>, "Simon Horman" <[email protected]>
>Sent: Tue, Feb 1, 2011, 11:08 AM
>Subject: [PATCH 1/5] IPVS: use z modifier for sizeof() argument
>
>Cc: Hans Schillstrom <[email protected]>
>Reported-by: Randy Dunlap <[email protected]>
>Signed-off-by: Simon Horman <[email protected]>

Signed-off-by: Hans Schillstrom <[email protected]>
Tested-by: Hans Schillstrom <[email protected]>

>---
> net/netfilter/ipvs/ip_vs_core.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
>diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
>index d889f4f..4d06617 100644
>--- a/net/netfilter/ipvs/ip_vs_core.c
>+++ b/net/netfilter/ipvs/ip_vs_core.c
>@@ -1887,7 +1887,7 @@ static int __net_init __ip_vs_init(struct net *net)
> ipvs->gen = atomic_read(&ipvs_netns_cnt);
> atomic_inc(&ipvs_netns_cnt);
> net->ipvs = ipvs;
>- printk(KERN_INFO "IPVS: Creating netns size=%lu id=%d\n",
>+ printk(KERN_INFO "IPVS: Creating netns size=%zu id=%d\n",
> sizeof(struct netns_ipvs), ipvs->gen);
> return 0;
> }
>--
>1.7.2.3
>
>--
>To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
>the body of a message to [email protected]
>More majordomo info at http://vger.kernel.org/majordomo-info.html

2011-02-01 17:07:20

by Hans Schillstrom

[permalink] [raw]
Subject: Re: [PATCH 3/5] IPVS: Remove unused variables

>---- Original Message ----
>From: Simon Horman <[email protected]>
>To: [email protected], [email protected], [email protected], [email protected]
>Cc: "Randy Dunlap" <[email protected]>, "Stephen Rothwell" <[email protected]>, "Hans Schillstrom" <[email protected]>, "Patrick McHardy" <[email protected]>, "Simon Horman" <[email protected]>
>Sent: Tue, Feb 1, 2011, 11:11 AM
>Subject: [PATCH 3/5] IPVS: Remove unused variables
>
>These variables are unused as a result of the recent netns work.
>
>Cc: Hans Schillstrom <[email protected]>
>Signed-off-by: Simon Horman <[email protected]>
Signed-off-by: Hans Schillstrom <[email protected]>
Tested-by: Hans Schillstrom <[email protected]>

>---
> include/net/ip_vs.h | 2 --
> 1 files changed, 0 insertions(+), 2 deletions(-)
>
>diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
>index b23bea6..5d75fea 100644
>--- a/include/net/ip_vs.h
>+++ b/include/net/ip_vs.h
>@@ -1109,8 +1109,6 @@ extern int ip_vs_icmp_xmit_v6
> * we are loaded. Just set ip_vs_drop_rate to 'n' and
> * we start to drop 1/rate of the packets
> */
>-extern int ip_vs_drop_rate;
>-extern int ip_vs_drop_counter;
>
> static inline int ip_vs_todrop(struct netns_ipvs *ipvs)
> {
>--
>1.7.2.3
>
>--
>To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
>the body of a message to [email protected]
>More majordomo info at http://vger.kernel.org/majordomo-info.html

2011-02-01 17:23:49

by Patrick McHardy

[permalink] [raw]
Subject: Re: [PATCH 1/5] IPVS: use z modifier for sizeof() argument

Am 01.02.2011 18:06, schrieb Hans Schillstrom:
>> >[PATCH 1/5] IPVS: use z modifier for sizeof() argument
>> >
>> >Cc: Hans Schillstrom <[email protected]>
>> >Reported-by: Randy Dunlap <[email protected]>
>> >Signed-off-by: Simon Horman <[email protected]>
> Signed-off-by: Hans Schillstrom <[email protected]>
> Tested-by: Hans Schillstrom <[email protected]>
>

Applied, thanks everyone.

2011-02-01 17:28:59

by Patrick McHardy

[permalink] [raw]
Subject: Re: [PATCH 3/5] IPVS: Remove unused variables

Am 01.02.2011 18:07, schrieb Hans Schillstrom:
>> [PATCH 3/5] IPVS: Remove unused variables
>> >
>> >These variables are unused as a result of the recent netns work.
>> >
>> >Cc: Hans Schillstrom <[email protected]>
>> >Signed-off-by: Simon Horman <[email protected]>
> Signed-off-by: Hans Schillstrom <[email protected]>
> Tested-by: Hans Schillstrom <[email protected]>
>

Applied, thanks.