aboutsummaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2014-12-28 19:24:01 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2014-12-28 19:24:01 +0000
commit84267cacf449706d08b5cfd16c97e9abe15115d5 (patch)
tree0187243db336d297a08deb68a9cacacd5a9d1e48 /sys/kern
parent874d48dc8f6162bcd00eaf2eaf0d8bade513e2ea (diff)
Notes
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_sysctl.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c
index 8220cff9f22c..f429a7bfdba7 100644
--- a/sys/kern/kern_sysctl.c
+++ b/sys/kern/kern_sysctl.c
@@ -174,7 +174,8 @@ sysctl_root_handler_locked(struct sysctl_oid *oid, void *arg1, intptr_t arg2,
int error;
bool xlocked;
- atomic_add_int(&oid->oid_running, 1);
+ if (oid->oid_kind & CTLFLAG_DYN)
+ atomic_add_int(&oid->oid_running, 1);
xlocked = sysctl_unlock();
if (!(oid->oid_kind & CTLFLAG_MPSAFE))
@@ -184,9 +185,11 @@ sysctl_root_handler_locked(struct sysctl_oid *oid, void *arg1, intptr_t arg2,
mtx_unlock(&Giant);
sysctl_lock(xlocked);
- if (atomic_fetchadd_int(&oid->oid_running, -1) == 1 &&
- (oid->oid_kind & CTLFLAG_DYING) != 0)
- wakeup(&oid->oid_running);
+ if (oid->oid_kind & CTLFLAG_DYN) {
+ if (atomic_fetchadd_int(&oid->oid_running, -1) == 1 &&
+ (oid->oid_kind & CTLFLAG_DYING) != 0)
+ wakeup(&oid->oid_running);
+ }
return (error);
}