Download raw body.
Remove superfluous check from sysctl(2)
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
Remove superfluous check from sysctl(2)