[PATCH] ipv6 addrconf: enable use of proc_dointvec_minmax in addrconf_sysctl

Subsystems: networking [general], networking [ipv4/ipv6], the rest

STALE3672d

3 messages, 2 authors, 2016-09-28 · open the first message on its own page

[PATCH] ipv6 addrconf: enable use of proc_dointvec_minmax in addrconf_sysctl

From: Maciej Żenczykowski <hidden>
Date: 2016-09-27 12:16:59

From: Maciej Żenczykowski <redacted>

Signed-off-by: Maciej Żenczykowski <redacted>
---
 net/ipv6/addrconf.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 2f1f5d439788..11fa1a5564d4 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -6044,8 +6044,14 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name,
 
 	for (i = 0; table[i].data; i++) {
 		table[i].data += (char *)p - (char *)&ipv6_devconf;
-		table[i].extra1 = idev; /* embedded; no ref */
-		table[i].extra2 = net;
+		/* If one of these is already set, then it is not safe to
+		 * overwrite either of them: this makes proc_dointvec_minmax
+		 * usable.
+		 */
+		if (!table[i].extra1 && !table[i].extra2) {
+			table[i].extra1 = idev; /* embedded; no ref */
+			table[i].extra2 = net;
+		}
 	}
 
 	snprintf(path, sizeof(path), "net/ipv6/conf/%s", dev_name);
-- 
2.8.0.rc3.226.g39d4020

Re: [PATCH] ipv6 addrconf: enable use of proc_dointvec_minmax in addrconf_sysctl

From: David Miller <davem@davemloft.net>
Date: 2016-09-28 11:49:11

From: Maciej Żenczykowski <redacted>
Date: Tue, 27 Sep 2016 05:16:45 -0700
From: Maciej Żenczykowski <redacted>

Signed-off-by: Maciej Żenczykowski <redacted>
I was about to ask you to submit this patch alongside an actual
addition of a proc_dointvec_minmax user to the table.

But upon second checking there is one, indirectly via
addrconf_sysctl_mtu().

I should never have to search and figure things out like that.  It
should be obvious or explained in the commit message.

You must explain in detail what the dependency is, why you
have to make this change, how you made it, and why you made
it that way.

Especially in this case, your empty commit message is really
not appropriate.

Thanks.

Re: [PATCH] ipv6 addrconf: enable use of proc_dointvec_minmax in addrconf_sysctl

From: David Miller <davem@davemloft.net>
Date: 2016-09-28 11:52:12

From: David Miller <davem@davemloft.net>
Date: Wed, 28 Sep 2016 07:49:01 -0400 (EDT)
From: Maciej Żenczykowski <redacted>
Date: Tue, 27 Sep 2016 05:16:45 -0700
quoted
From: Maciej Żenczykowski <redacted>

Signed-off-by: Maciej Żenczykowski <redacted>
I was about to ask you to submit this patch alongside an actual
addition of a proc_dointvec_minmax user to the table.

But upon second checking there is one, indirectly via
addrconf_sysctl_mtu().
And actually these cases use a dummy sysctl blob on the stack to
provide the min/max values to proc_dointvec_minmax.  And they do
it _EXACTLY_ because the extra pointers are for the netns pointer
and a pointer to the idev.

And any user envisioned can do the same thing, use a trampoline
like the existing cases do.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help