diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2009-01-15 12:15:46 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2009-01-15 12:15:46 +0000 |
| commit | 137cf3b682f076b54b5c21d44d3701b633626a41 (patch) | |
| tree | aae03d0ed37fbdec6c6457e4413d72361acc61c1 /sys/kern/sysv_sem.c | |
| parent | 892f21a68124e1d4fbe7e5a5b6f46227441edf00 (diff) | |
Notes
Diffstat (limited to 'sys/kern/sysv_sem.c')
| -rw-r--r-- | sys/kern/sysv_sem.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/kern/sysv_sem.c b/sys/kern/sysv_sem.c index 46a307f4f29d..0112a042088c 100644 --- a/sys/kern/sysv_sem.c +++ b/sys/kern/sysv_sem.c @@ -914,6 +914,9 @@ semget(struct thread *td, struct semget_args *uap) goto done2; } DPRINTF(("semid %d is available\n", semid)); + mtx_lock(&sema_mtx[semid]); + KASSERT((sema[semid].u.sem_perm.mode & SEM_ALLOC) == 0, + ("Lost semaphore %d", semid)); sema[semid].u.sem_perm.key = key; sema[semid].u.sem_perm.cuid = cred->cr_uid; sema[semid].u.sem_perm.uid = cred->cr_uid; @@ -932,6 +935,7 @@ semget(struct thread *td, struct semget_args *uap) #ifdef MAC mac_sysvsem_create(cred, &sema[semid]); #endif + mtx_unlock(&sema_mtx[semid]); DPRINTF(("sembase = %p, next = %p\n", sema[semid].u.sem_base, &sem[semtot])); } else { |
