Index | Thread | Search

From:
Christian Ludwig <cludwig@genua.de>
Subject:
Remove superfluous check from sysctl(2)
To:
<tech@openbsd.org>
Date:
Sun, 7 Jul 2024 18:50:27 +0200

Download raw body.

Thread
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