From: David Ahern <dsahern@gmail.com>
To: Sabrina Dubroca <sd@queasysnail.net>, netdev@vger.kernel.org
Cc: Jiri Pirko <jiri@resnulli.us>, Felix Jia <felix.jia@alliedtelesis.co.nz>
Subject: Re: [PATCH net 1/3] net/ipv6: fix addrconf_sysctl_addr_gen_mode
Date: Fri, 6 Jul 2018 08:42:01 -0600 [thread overview]
Message-ID: <3c53aeaf-912f-8921-c9df-40f2caa1747a@gmail.com> (raw)
In-Reply-To: <f5e0fd3bdfdb6a11e13879c209b0fe5364f136f2.1530884498.git.sd@queasysnail.net>
On 7/6/18 7:49 AM, Sabrina Dubroca wrote:
> diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
> index 91580c62bb86..e9ba53d2a147 100644
> --- a/net/ipv6/addrconf.c
> +++ b/net/ipv6/addrconf.c
> @@ -5892,32 +5892,31 @@ static int addrconf_sysctl_addr_gen_mode(struct ctl_table *ctl, int write,
> loff_t *ppos)
> {
> int ret = 0;
> - int new_val;
> + u32 new_val;
> struct inet6_dev *idev = (struct inet6_dev *)ctl->extra1;
> struct net *net = (struct net *)ctl->extra2;
> + struct ctl_table tmp = {
> + .data = &new_val,
> + .maxlen = sizeof(new_val),
> + .mode = ctl->mode,
> + };
>
> if (!rtnl_trylock())
> return restart_syscall();
>
> - ret = proc_dointvec(ctl, write, buffer, lenp, ppos);
> + new_val = *((u32 *)ctl->data);
>
> - if (write) {
> - new_val = *((int *)ctl->data);
> + ret = proc_douintvec(&tmp, write, buffer, lenp, ppos);
> + if (ret != 0)
> + goto out;
>
> + if (write) {
> if (check_addr_gen_mode(new_val) < 0) {
> ret = -EINVAL;
> goto out;
> }
>
> - /* request for default */
> - if (&net->ipv6.devconf_dflt->addr_gen_mode == ctl->data) {
> - ipv6_devconf_dflt.addr_gen_mode = new_val;
updating the template is wrong, but you still need to update the
namespace's default value for new devices.
also, if you are fixing this it would be good to handle the change to
'all' as well and update all existing devices.
> -
> - /* request for individual net device */
> - } else {
> - if (!idev)
> - goto out;
> -
> + if (idev) {
> if (check_stable_privacy(idev, net, new_val) < 0) {
> ret = -EINVAL;
> goto out;
> @@ -5928,6 +5927,8 @@ static int addrconf_sysctl_addr_gen_mode(struct ctl_table *ctl, int write,
> addrconf_dev_config(idev->dev);
> }
> }
> +
> + *((u32 *)ctl->data) = new_val;
> }
>
> out:
>
next prev parent reply other threads:[~2018-07-06 14:41 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-06 13:49 [PATCH net 0/3] net/ipv6: addr_gen_mode fixes Sabrina Dubroca
2018-07-06 13:49 ` [PATCH net 1/3] net/ipv6: fix addrconf_sysctl_addr_gen_mode Sabrina Dubroca
2018-07-06 14:42 ` David Ahern [this message]
2018-07-06 15:02 ` Sabrina Dubroca
2018-07-06 15:28 ` David Ahern
2018-07-06 15:58 ` Sabrina Dubroca
2018-07-06 23:28 ` David Ahern
2018-07-06 13:49 ` [PATCH net 2/3] net/ipv6: don't reinitialize ndev->cnf.addr_gen_mode on new inet6_dev Sabrina Dubroca
2018-07-06 14:42 ` David Ahern
2018-07-06 13:49 ` [PATCH net 3/3] net/ipv6: reserve room for IFLA_INET6_ADDR_GEN_MODE Sabrina Dubroca
2018-07-06 14:45 ` David Ahern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3c53aeaf-912f-8921-c9df-40f2caa1747a@gmail.com \
--to=dsahern@gmail.com \
--cc=felix.jia@alliedtelesis.co.nz \
--cc=jiri@resnulli.us \
--cc=netdev@vger.kernel.org \
--cc=sd@queasysnail.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).