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