From: Sabrina Dubroca <sd@queasysnail.net>
To: Marcelo Ricardo Leitner <mleitner@redhat.com>
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH net] ipv6: addrconf: validate new MTU before applying it
Date: Sat, 21 Feb 2015 16:54:07 +0100 [thread overview]
Message-ID: <20150221155407.GA16874@kria> (raw)
In-Reply-To: <60cde83b718e88aa7fcae7239a3aac704e048efc.1424456163.git.mleitner@redhat.com>
Hi,
2015-02-20, 16:24:06 -0200, Marcelo Ricardo Leitner wrote:
> [...]
> ---
> net/ipv6/addrconf.c | 32 +++++++++++++++++++++++++++++++-
> 1 file changed, 31 insertions(+), 1 deletion(-)
>
> diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
> index f7c8bbeb27b704c0106f714d5a0677c27d3346e0..38892228ccacfe8b67b182784723cc0b67ce572b 100644
> --- a/net/ipv6/addrconf.c
> +++ b/net/ipv6/addrconf.c
> @@ -4863,6 +4863,36 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write,
> return ret;
> }
>
> +static
> +int addrconf_sysctl_mtu(struct ctl_table *ctl, int write,
> + void __user *buffer, size_t *lenp, loff_t *ppos)
> +{
> + int *valp = ctl->data;
> + int val = *valp;
> + loff_t pos = *ppos;
> + struct ctl_table lctl;
> + int ret;
> +
> + /* ctl->data points to idev->cnf.mtu6
> + */
> + lctl = *ctl;
> + lctl.data = &val;
> +
> + ret = proc_dointvec(&lctl, write, buffer, lenp, ppos);
> +
> + if (write) {
> + struct inet6_dev *idev = ctl->extra1;
> +
> + if (val >= IPV6_MIN_MTU && val <= idev->dev->mtu)
"all" and "default" don't have an idev, so you need a check here:
if (val >= IPV6_MIN_MTU && (!idev || val <= idev->dev->mtu))
> + *valp = val;
> + else
> + ret = -EINVAL;
> + }
> + if (ret)
> + *ppos = pos;
> + return ret;
> +}
> +
You could call proc_dointvec_minmax to do the checks. Something like:
static
int addrconf_sysctl_mtu(struct ctl_table *ctl, int write,
void __user *buffer, size_t *lenp, loff_t *ppos)
{
struct inet6_dev *idev = ctl->extra1;
int min_mtu = IPV6_MIN_MTU;
struct ctl_table lctl;
lctl = *ctl;
lctl.extra1 = &min_mtu;
lctl.extra2 = idev ? &idev->dev->mtu : NULL;
return proc_dointvec_minmax(&lctl, write, buffer, lenp, ppos);
}
Thanks,
--
Sabrina
next prev parent reply other threads:[~2015-02-21 15:54 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-20 18:24 [PATCH net] ipv6: addrconf: validate new MTU before applying it Marcelo Ricardo Leitner
2015-02-21 15:54 ` Sabrina Dubroca [this message]
2015-02-22 3:40 ` Marcelo Ricardo Leitner
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=20150221155407.GA16874@kria \
--to=sd@queasysnail.net \
--cc=mleitner@redhat.com \
--cc=netdev@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.