summaryrefslogtreecommitdiff
path: root/sys/kern/sysv_sem.c
diff options
context:
space:
mode:
authorOleksandr Tymoshenko <gonzo@FreeBSD.org>2008-06-19 18:08:42 +0000
committerOleksandr Tymoshenko <gonzo@FreeBSD.org>2008-06-19 18:08:42 +0000
commit23c8064e660c02bc5b5ea546694f14a381201bb0 (patch)
treeeec439d6c836832fe1d99038cca03ced7da00ae7 /sys/kern/sysv_sem.c
parent145d2d3ac48a8e1890b286d5c2eb166c25124e6f (diff)
Notes
Diffstat (limited to 'sys/kern/sysv_sem.c')
-rw-r--r--sys/kern/sysv_sem.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/kern/sysv_sem.c b/sys/kern/sysv_sem.c
index bea78326f889..80d07ba8dc38 100644
--- a/sys/kern/sysv_sem.c
+++ b/sys/kern/sysv_sem.c
@@ -1167,6 +1167,13 @@ semop(td, uap)
}
/*
+ * Renew the semaphore's pointer after wakeup since
+ * during msleep sem_base may have been modified and semptr
+ * is not valid any more
+ */
+ semptr = &semakptr->u.sem_base[sopptr->sem_num];
+
+ /*
* The semaphore is still alive. Readjust the count of
* waiting processes.
*/