From: Christian Ludwig Subject: Remove superfluous check from sysctl(2) To: Date: Sun, 7 Jul 2024 18:50:27 +0200 Hi, The last user that has set dolock = 0 was removed in v1.272, 2014/11/19. I think it's safe to remove that variable. Have fun. --- sys/kern/kern_sysctl.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index 5d0d1a8a851..6606c34a187 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -172,7 +172,7 @@ sys_sysctl(struct proc *p, void *v, register_t *retval) syscallarg(void *) new; syscallarg(size_t) newlen; } */ *uap = v; - int error, dolock = 1; + int error; size_t savelen = 0, oldlen = 0; sysctlfn *fn; int name[CTL_MAXNAME]; @@ -237,25 +237,22 @@ sys_sysctl(struct proc *p, void *v, register_t *retval) if (SCARG(uap, old) != NULL) { if ((error = rw_enter(&sysctl_lock, RW_WRITE|RW_INTR)) != 0) return (error); - if (dolock) { - if (atop(oldlen) > uvmexp.wiredmax - uvmexp.wired) { - rw_exit_write(&sysctl_lock); - return (ENOMEM); - } - error = uvm_vslock(p, SCARG(uap, old), oldlen, - PROT_READ | PROT_WRITE); - if (error) { - rw_exit_write(&sysctl_lock); - return (error); - } + if (atop(oldlen) > uvmexp.wiredmax - uvmexp.wired) { + rw_exit_write(&sysctl_lock); + return (ENOMEM); + } + error = uvm_vslock(p, SCARG(uap, old), oldlen, + PROT_READ | PROT_WRITE); + if (error) { + rw_exit_write(&sysctl_lock); + return (error); } savelen = oldlen; } error = (*fn)(&name[1], SCARG(uap, namelen) - 1, SCARG(uap, old), &oldlen, SCARG(uap, new), SCARG(uap, newlen), p); if (SCARG(uap, old) != NULL) { - if (dolock) - uvm_vsunlock(p, SCARG(uap, old), savelen); + uvm_vsunlock(p, SCARG(uap, old), savelen); rw_exit_write(&sysctl_lock); } if (error) -- 2.34.1