Hello, On Fri, Apr 28, 2023 at 09:02:35PM +0000, Klemens Nanni wrote: > Same logic and argument as for the parent *S ioctl, might as well have > committed them together: > --- > Remove net lock from DIOCGETQUEUES > > Both ticket and number of queues stem from the pf_queues_active list which > is effectively static to pf_ioctl.c and fully protected by the pf lock. > --- > > OK?
looks good OK sashan > > > Index: pf_ioctl.c > =================================================================== > RCS file: /cvs/src/sys/net/pf_ioctl.c,v > retrieving revision 1.401 > diff -u -p -U5 -r1.401 pf_ioctl.c > --- pf_ioctl.c 28 Apr 2023 14:08:38 -0000 1.401 > +++ pf_ioctl.c 28 Apr 2023 20:52:54 -0000 > @@ -1229,32 +1229,28 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a > case DIOCGETQUEUE: { > struct pfioc_queue *pq = (struct pfioc_queue *)addr; > struct pf_queuespec *qs; > u_int32_t nr = 0; > > - NET_LOCK(); > PF_LOCK(); > if (pq->ticket != pf_main_ruleset.rules.active.version) { > error = EBUSY; > PF_UNLOCK(); > - NET_UNLOCK(); > goto fail; > } > > /* save state to not run over them all each time? */ > qs = TAILQ_FIRST(pf_queues_active); > while ((qs != NULL) && (nr++ < pq->nr)) > qs = TAILQ_NEXT(qs, entries); > if (qs == NULL) { > error = EBUSY; > PF_UNLOCK(); > - NET_UNLOCK(); > goto fail; > } > memcpy(&pq->queue, qs, sizeof(pq->queue)); > PF_UNLOCK(); > - NET_UNLOCK(); > break; > } > > case DIOCGETQSTATS: { > struct pfioc_qstats *pq = (struct pfioc_qstats *)addr; >