Index | Thread | Search

From:
Alexander Bluhm <bluhm@openbsd.org>
Subject:
Re: sysctl(2): unlock igmp_sysctl(), pfsync_sysctl() and rip6_sysctl()
To:
Vitaliy Makkoveev <mvs@openbsd.org>
Cc:
tech@openbsd.org
Date:
Mon, 19 Aug 2024 13:18:59 +0200

Download raw body.

Thread
On Fri, Aug 16, 2024 at 04:18:04PM +0300, Vitaliy Makkoveev wrote:
> Each of them is the only IGMPCTL_STATS, PFSYNCCTL_STATS and
> RIPV6CTL_STATS per-CPU counters.
> 
> sysctl_rdstruct() has "newp != NULL" check within and also returns
> EPERM, no need for redundant check in igmp_sysctl().
> 
> ok?

OK bluhm@

> Index: sys/netinet/igmp.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet/igmp.c,v
> diff -u -p -r1.84 igmp.c
> --- sys/netinet/igmp.c	12 Aug 2024 11:25:27 -0000	1.84
> +++ sys/netinet/igmp.c	16 Aug 2024 13:11:21 -0000
> @@ -687,8 +687,6 @@ igmp_sysctl(int *name, u_int namelen, vo
>  
>  	switch (name[0]) {
>  	case IGMPCTL_STATS:
> -		if (newp != NULL)
> -			return (EPERM);
>  		return (igmp_sysctl_igmpstat(oldp, oldlenp, newp));
>  	default:
>  		return (EOPNOTSUPP);
> Index: sys/netinet/in_proto.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet/in_proto.c,v
> diff -u -p -r1.108 in_proto.c
> --- sys/netinet/in_proto.c	16 Aug 2024 09:20:35 -0000	1.108
> +++ sys/netinet/in_proto.c	16 Aug 2024 13:11:21 -0000
> @@ -270,7 +270,7 @@ const struct protosw inetsw[] = {
>    .pr_type	= SOCK_RAW,
>    .pr_domain	= &inetdomain,
>    .pr_protocol	= IPPROTO_IGMP,
> -  .pr_flags	= PR_ATOMIC|PR_ADDR|PR_MPSOCKET,
> +  .pr_flags	= PR_ATOMIC|PR_ADDR|PR_MPSOCKET|PR_MPSYSCTL,
>    .pr_input	= igmp_input,
>    .pr_ctloutput	= rip_ctloutput,
>    .pr_usrreqs	= &rip_usrreqs,
> @@ -342,7 +342,7 @@ const struct protosw inetsw[] = {
>    .pr_type	= SOCK_RAW,
>    .pr_domain	= &inetdomain,
>    .pr_protocol	= IPPROTO_PFSYNC,
> -  .pr_flags	= PR_ATOMIC|PR_ADDR|PR_MPSOCKET,
> +  .pr_flags	= PR_ATOMIC|PR_ADDR|PR_MPSOCKET|PR_MPSYSCTL,
>    .pr_input	= pfsync_input4,
>    .pr_ctloutput	= rip_ctloutput,
>    .pr_usrreqs	= &rip_usrreqs,
> Index: sys/netinet6/in6_proto.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/in6_proto.c,v
> diff -u -p -r1.118 in6_proto.c
> --- sys/netinet6/in6_proto.c	16 Aug 2024 09:20:35 -0000	1.118
> +++ sys/netinet6/in6_proto.c	16 Aug 2024 13:11:21 -0000
> @@ -158,7 +158,7 @@ const struct protosw inet6sw[] = {
>    .pr_type	= SOCK_RAW,
>    .pr_domain	= &inet6domain,
>    .pr_protocol	= IPPROTO_RAW,
> -  .pr_flags	= PR_ATOMIC|PR_ADDR|PR_MPINPUT|PR_MPSOCKET,
> +  .pr_flags	= PR_ATOMIC|PR_ADDR|PR_MPINPUT|PR_MPSOCKET|PR_MPSYSCTL,
>    .pr_input	= rip6_input,
>    .pr_ctlinput	= rip6_ctlinput,
>    .pr_ctloutput	= rip6_ctloutput,