summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-11-13 17:44:35 +0000
committerkib <kib@FreeBSD.org>2014-11-13 17:44:35 +0000
commit6cedba80db2d89362880d0bc650f5ee44739ab51 (patch)
treebadf7b98e6b928a2d3fbd57ec6c7191b1bff1725
parente257542e113f6ae0cd6d02b9467ae160bfbecf36 (diff)
downloadFreeBSD-src-6cedba80db2d89362880d0bc650f5ee44739ab51.zip
FreeBSD-src-6cedba80db2d89362880d0bc650f5ee44739ab51.tar.gz
Do not try to dereference thread pointer when the value is not a pointer.
Reported and tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week
-rw-r--r--sys/kern/kern_lock.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c
index 3fc151d..36a8470 100644
--- a/sys/kern/kern_lock.c
+++ b/sys/kern/kern_lock.c
@@ -1360,9 +1360,14 @@ lockmgr_printinfo(const struct lock *lk)
(uintmax_t)LK_SHARERS(lk->lk_lock));
else {
td = lockmgr_xholder(lk);
- printf("lock type %s: EXCL by thread %p "
- "(pid %d, %s, tid %d)\n", lk->lock_object.lo_name, td,
- td->td_proc->p_pid, td->td_proc->p_comm, td->td_tid);
+ if (td == (struct thread *)LK_KERNPROC)
+ printf("lock type %s: EXCL by KERNPROC\n",
+ lk->lock_object.lo_name);
+ else
+ printf("lock type %s: EXCL by thread %p "
+ "(pid %d, %s, tid %d)\n", lk->lock_object.lo_name,
+ td, td->td_proc->p_pid, td->td_proc->p_comm,
+ td->td_tid);
}
x = lk->lk_lock;
OpenPOWER on IntegriCloud