diff options
author | rwatson <rwatson@FreeBSD.org> | 2005-02-25 21:00:14 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2005-02-25 21:00:14 +0000 |
commit | f1482428e1d20f001be32c59256c11419289b921 (patch) | |
tree | 794d766e7e482a3a786dd2cca88f7dec0747edf5 /sys/kern/uipc_sem.c | |
parent | c6ed41799443fa1c2fc2e700050bdf163c0cce83 (diff) | |
download | FreeBSD-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.c | 5 |
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. |