[PATCH net-next] net: ipv6: avoid accepting values greater than 2 for accept_untracked_na

Jaehee Park posted 1 patch 3 years, 9 months ago
There is a newer version of this series
net/ipv6/addrconf.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH net-next] net: ipv6: avoid accepting values greater than 2 for accept_untracked_na
Posted by Jaehee Park 3 years, 9 months ago
The accept_untracked_na sysctl changed from a boolean to an integer
when a new knob '2' was added. This patch provides a safeguard to avoid
accepting values that are not defined in the sysctl. When setting a
value greater than 2, the user will get an 'invalid argument' warning.

Signed-off-by: Jaehee Park <jhpark1013@gmail.com>
Suggested-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Suggested-by: Roopa Prabhu <roopa@nvidia.com>
---
 net/ipv6/addrconf.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 6ed807b6c647..d3e77ea24f05 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -7042,9 +7042,9 @@ static const struct ctl_table addrconf_sysctl[] = {
 		.data		= &ipv6_devconf.accept_untracked_na,
 		.maxlen		= sizeof(int),
 		.mode		= 0644,
-		.proc_handler	= proc_dointvec,
+		.proc_handler	= proc_dointvec_minmax,
 		.extra1		= (void *)SYSCTL_ZERO,
-		.extra2		= (void *)SYSCTL_ONE,
+		.extra2		= (void *)SYSCTL_TWO,
 	},
 	{
 		/* sentinel */
-- 
2.30.2
Re: [PATCH net-next] net: ipv6: avoid accepting values greater than 2 for accept_untracked_na
Posted by Nicolas Dichtel 3 years, 9 months ago
Le 20/07/2022 à 08:52, Jaehee Park a écrit :
> The accept_untracked_na sysctl changed from a boolean to an integer
> when a new knob '2' was added. This patch provides a safeguard to avoid
> accepting values that are not defined in the sysctl. When setting a
> value greater than 2, the user will get an 'invalid argument' warning.
> 
> Signed-off-by: Jaehee Park <jhpark1013@gmail.com>
> Suggested-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
> Suggested-by: Roopa Prabhu <roopa@nvidia.com>
> ---
>  net/ipv6/addrconf.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
> index 6ed807b6c647..d3e77ea24f05 100644
> --- a/net/ipv6/addrconf.c
> +++ b/net/ipv6/addrconf.c
> @@ -7042,9 +7042,9 @@ static const struct ctl_table addrconf_sysctl[] = {
>  		.data		= &ipv6_devconf.accept_untracked_na,
>  		.maxlen		= sizeof(int),
>  		.mode		= 0644,
> -		.proc_handler	= proc_dointvec,
> +		.proc_handler	= proc_dointvec_minmax,
>  		.extra1		= (void *)SYSCTL_ZERO,
> -		.extra2		= (void *)SYSCTL_ONE,
> +		.extra2		= (void *)SYSCTL_TWO,
Nit: the cast is useless:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/sysctl.h#n40


Regards,
Nicolas
Re: [PATCH net-next] net: ipv6: avoid accepting values greater than 2 for accept_untracked_na
Posted by Jaehee 3 years, 9 months ago
On Wed, Jul 20, 2022 at 4:26 AM Nicolas Dichtel
<nicolas.dichtel@6wind.com> wrote:
>
>
> Le 20/07/2022 à 08:52, Jaehee Park a écrit :
> > The accept_untracked_na sysctl changed from a boolean to an integer
> > when a new knob '2' was added. This patch provides a safeguard to avoid
> > accepting values that are not defined in the sysctl. When setting a
> > value greater than 2, the user will get an 'invalid argument' warning.
> >
> > Signed-off-by: Jaehee Park <jhpark1013@gmail.com>
> > Suggested-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
> > Suggested-by: Roopa Prabhu <roopa@nvidia.com>
> > ---
> >  net/ipv6/addrconf.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
> > index 6ed807b6c647..d3e77ea24f05 100644
> > --- a/net/ipv6/addrconf.c
> > +++ b/net/ipv6/addrconf.c
> > @@ -7042,9 +7042,9 @@ static const struct ctl_table addrconf_sysctl[] = {
> >               .data           = &ipv6_devconf.accept_untracked_na,
> >               .maxlen         = sizeof(int),
> >               .mode           = 0644,
> > -             .proc_handler   = proc_dointvec,
> > +             .proc_handler   = proc_dointvec_minmax,
> >               .extra1         = (void *)SYSCTL_ZERO,
> > -             .extra2         = (void *)SYSCTL_ONE,
> > +             .extra2         = (void *)SYSCTL_TWO,
> Nit: the cast is useless:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/sysctl.h#n40
>

O yes thank you for pointing that out! I just sent a v2 for your review.

>
> Regards,
> Nicolas

Thanks,
Jaehee