summaryrefslogtreecommitdiffstats
path: root/cddl
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2009-07-09 20:22:05 +0000
committerpjd <pjd@FreeBSD.org>2009-07-09 20:22:05 +0000
commitd8377a604cb8480703c77bad2df6defd63f40e2d (patch)
tree54dec725b287445b7ac09e0a90da06c4f4d0d081 /cddl
parentdcfe611845bcded2f3a99bf14db514ce5acf89b8 (diff)
downloadFreeBSD-src-d8377a604cb8480703c77bad2df6defd63f40e2d.zip
FreeBSD-src-d8377a604cb8480703c77bad2df6defd63f40e2d.tar.gz
The mutex_owned() macro should operate on kmutex_t and not on mutex_t.
This fixes 'zdb <poolname>' crash. Reported by: avg Approved by: re (kib)
Diffstat (limited to 'cddl')
-rw-r--r--cddl/contrib/opensolaris/head/thread.h1
-rw-r--r--cddl/contrib/opensolaris/lib/libzpool/common/kernel.c8
-rw-r--r--cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h2
3 files changed, 10 insertions, 1 deletions
diff --git a/cddl/contrib/opensolaris/head/thread.h b/cddl/contrib/opensolaris/head/thread.h
index b374b8a..818f078 100644
--- a/cddl/contrib/opensolaris/head/thread.h
+++ b/cddl/contrib/opensolaris/head/thread.h
@@ -53,7 +53,6 @@ typedef pthread_rwlock_t rwlock_t;
#define mutex_lock(l) pthread_mutex_lock(l)
#define mutex_trylock(l) pthread_mutex_trylock(l)
#define mutex_unlock(l) pthread_mutex_unlock(l)
-#define mutex_owned(l) pthread_mutex_isowned_np(l)
#define rwlock_init(l,f,a) pthread_rwlock_init(l,NULL)
#define rwlock_destroy(l) pthread_rwlock_destroy(l)
#define rw_rdlock(l) pthread_rwlock_rdlock(l)
diff --git a/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c b/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
index 467cf5c..a13cd76 100644
--- a/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
+++ b/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
@@ -115,6 +115,14 @@ zmutex_destroy(kmutex_t *mp)
mp->initialized = B_FALSE;
}
+int
+zmutex_owned(kmutex_t *mp)
+{
+ ASSERT(mp->initialized == B_TRUE);
+
+ return (mp->m_owner == curthread);
+}
+
void
mutex_enter(kmutex_t *mp)
{
diff --git a/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h b/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
index 7ae7f9d..4ef6472 100644
--- a/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
+++ b/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
@@ -237,9 +237,11 @@ typedef struct kmutex {
#define mutex_init(mp, b, c, d) zmutex_init((kmutex_t *)(mp))
#define mutex_destroy(mp) zmutex_destroy((kmutex_t *)(mp))
+#define mutex_owned(mp) zmutex_owned((kmutex_t *)(mp))
extern void zmutex_init(kmutex_t *mp);
extern void zmutex_destroy(kmutex_t *mp);
+extern int zmutex_owned(kmutex_t *mp);
extern void mutex_enter(kmutex_t *mp);
extern void mutex_exit(kmutex_t *mp);
extern int mutex_tryenter(kmutex_t *mp);
OpenPOWER on IntegriCloud