summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_sem.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2005-02-25 21:00:14 +0000
committerrwatson <rwatson@FreeBSD.org>2005-02-25 21:00:14 +0000
commitf1482428e1d20f001be32c59256c11419289b921 (patch)
tree794d766e7e482a3a786dd2cca88f7dec0747edf5 /sys/kern/uipc_sem.c
parentc6ed41799443fa1c2fc2e700050bdf163c0cce83 (diff)
downloadFreeBSD-src-f1482428e1d20f001be32c59256c11419289b921.zip
FreeBSD-src-f1482428e1d20f001be32c59256c11419289b921.tar.gz
Insert missing increment of (i) when walking the temporary semaphore
vector during fork. Fix assertion which contained an off-by-one error. Submitted by: Antoine Brodin < antoine dot brodin at laposte dot net >
Diffstat (limited to 'sys/kern/uipc_sem.c')
-rw-r--r--sys/kern/uipc_sem.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/uipc_sem.c b/sys/kern/uipc_sem.c
index 1cf5e80..5366f3a 100644
--- a/sys/kern/uipc_sem.c
+++ b/sys/kern/uipc_sem.c
@@ -910,6 +910,7 @@ race_lost:
if (ku->ku_pid == p1->p_pid) {
sem_ref(ks);
sem_array[i] = ks;
+ i++;
break;
}
}
@@ -919,13 +920,13 @@ race_lost:
if (ku->ku_pid == p1->p_pid) {
sem_ref(ks);
sem_array[i] = ks;
+ i++;
break;
}
}
}
mtx_unlock(&sem_lock);
- KASSERT(i + 1 == count, ("sem_forkhook: i != count (%d, %d)", i,
- count));
+ KASSERT(i == count, ("sem_forkhook: i != count (%d, %d)", i, count));
/*
* Now cause p2 to enter each of the referenced semaphores, then
* release our temporary reference. This is pretty inefficient.
OpenPOWER on IntegriCloud