summaryrefslogtreecommitdiff
path: root/usr/src/uts/common
diff options
context:
space:
mode:
authorLin Ling <Lin.Ling@Sun.COM>2010-06-02 14:51:30 -0700
committerLin Ling <Lin.Ling@Sun.COM>2010-06-02 14:51:30 -0700
commita0e4757d0a6af35e4f970785eae9598f525e5a12 (patch)
treefc2c6abfff88a0f840ef35c0c0f02578edcaf080 /usr/src/uts/common
parent88acca042ae2c1a7a6a8bb2dcc6641d798574cd4 (diff)
downloadillumos-joyent-a0e4757d0a6af35e4f970785eae9598f525e5a12.tar.gz
6956280 mutex problem in bpobj_iterate_impl()
Diffstat (limited to 'usr/src/uts/common')
-rw-r--r--usr/src/uts/common/fs/zfs/bpobj.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/usr/src/uts/common/fs/zfs/bpobj.c b/usr/src/uts/common/fs/zfs/bpobj.c
index f81c48aca6..d69a1a7f47 100644
--- a/usr/src/uts/common/fs/zfs/bpobj.c
+++ b/usr/src/uts/common/fs/zfs/bpobj.c
@@ -210,8 +210,10 @@ bpobj_iterate_impl(bpobj_t *bpo, bpobj_itor_t func, void *arg, dmu_tx_t *tx,
ASSERT(bpo->bpo_havecomp);
err = dmu_object_info(bpo->bpo_os, bpo->bpo_phys->bpo_subobjs, &doi);
- if (err)
+ if (err) {
+ mutex_exit(&bpo->bpo_lock);
return (err);
+ }
epb = doi.doi_data_block_size / sizeof (uint64_t);
for (i = bpo->bpo_phys->bpo_num_subobjs - 1; i >= 0; i--) {