diff options
author | pjd <pjd@FreeBSD.org> | 2007-10-04 17:51:59 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2007-10-04 17:51:59 +0000 |
commit | 1958f24dc22430324da5d777981664e93d86849c (patch) | |
tree | d73155134933e8d7ee73c02a6f9d9ce8ad9e385a /sys/cddl/contrib/opensolaris/uts/common/fs/zfs | |
parent | 0c91cfd26be696d7accaeac0635f838a69826282 (diff) | |
download | FreeBSD-src-1958f24dc22430324da5d777981664e93d86849c.zip FreeBSD-src-1958f24dc22430324da5d777981664e93d86849c.tar.gz |
Fix lock leak leading to the 'System call <name> returning with 1 locks held'
panic.
Reported by: kris
Approved by: re (kensmith)
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs')
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c index 9b7e23c..9a882a5 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c @@ -209,6 +209,8 @@ mzap_open(objset_t *os, uint64_t obj, dmu_buf_t *db) winner = dmu_buf_set_user(db, zap, &zap->zap_m.zap_phys, zap_evict); if (winner != NULL) { + rw_exit(&zap->zap_rwlock); + rw_destroy(&zap->zap_rwlock); if (!zap->zap_ismicro) mutex_destroy(&zap->zap_f.zap_num_entries_mtx); kmem_free(zap, sizeof (zap_t)); |