Patchwork [net] neigh: fix setting of default gc_* values

login
register
mail settings
Submitter Jiri Pirko
Date Feb. 21, 2014, 1:52 p.m.
Message ID <1392990777-9446-1-git-send-email-jiri@resnulli.us>
Download mbox | patch
Permalink /patch/322870/
State Accepted
Delegated to: David Miller
Headers show

Comments

Jiri Pirko - Feb. 21, 2014, 1:52 p.m.
This patch fixes bug introduced by:
commit 1d4c8c29841b9991cdf3c7cc4ba7f96a94f104ca
"neigh: restore old behaviour of default parms values"

The thing is that in neigh_sysctl_register, extra1 and extra2 which were
previously set for NEIGH_VAR_GC_* are overwritten. That leads to
nonsense int limits for gc_* variables. So fix this by not touching
extra* fields for gc_* variables.

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
---
 net/core/neighbour.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
David Miller - Feb. 22, 2014, 5:09 a.m.
From: Jiri Pirko <jiri@resnulli.us>
Date: Fri, 21 Feb 2014 14:52:57 +0100

> This patch fixes bug introduced by:
> commit 1d4c8c29841b9991cdf3c7cc4ba7f96a94f104ca
> "neigh: restore old behaviour of default parms values"
> 
> The thing is that in neigh_sysctl_register, extra1 and extra2 which were
> previously set for NEIGH_VAR_GC_* are overwritten. That leads to
> nonsense int limits for gc_* variables. So fix this by not touching
> extra* fields for gc_* variables.
> 
> Signed-off-by: Jiri Pirko <jiri@resnulli.us>

Good catch, applied and queued up for -stable.

Thanks!
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index b9e9e0d..e1aa0f3 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -3046,7 +3046,7 @@  int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
 	if (!t)
 		goto err;
 
-	for (i = 0; i < ARRAY_SIZE(t->neigh_vars); i++) {
+	for (i = 0; i < NEIGH_VAR_GC_INTERVAL; i++) {
 		t->neigh_vars[i].data += (long) p;
 		t->neigh_vars[i].extra1 = dev;
 		t->neigh_vars[i].extra2 = p;