diff options
author | davidxu <davidxu@FreeBSD.org> | 2007-12-17 08:09:37 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2007-12-17 08:09:37 +0000 |
commit | 496a3a2c524be0d8fb834ef5bad45f4611b82969 (patch) | |
tree | 61f9721f580e57e22991413331e4cfb8d2fdb779 | |
parent | 4fadeed69d00924e9b370a1aed3ebea603636314 (diff) | |
download | FreeBSD-src-496a3a2c524be0d8fb834ef5bad45f4611b82969.zip FreeBSD-src-496a3a2c524be0d8fb834ef5bad45f4611b82969.tar.gz |
Check NULL pointer.
-rw-r--r-- | sys/kern/kern_umtx.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/kern/kern_umtx.c b/sys/kern/kern_umtx.c index 0857366d..6fa6bef 100644 --- a/sys/kern/kern_umtx.c +++ b/sys/kern/kern_umtx.c @@ -1407,8 +1407,17 @@ umtx_pi_adjust_locked(struct thread *td, u_char oldpri) void umtx_pi_adjust(struct thread *td, u_char oldpri) { + struct umtx_q *uq; + struct umtx_pi *pi; + + uq = td->td_umtxq; mtx_lock_spin(&umtx_lock); - umtx_pi_adjust_locked(td, oldpri); + /* + * Pick up the lock that td is blocked on. + */ + pi = uq->uq_pi_blocked; + if (pi != NULL) + umtx_pi_adjust_locked(td, oldpri); mtx_unlock_spin(&umtx_lock); } |