DF-0819 / fix.diff
diff --git a/sys/vfs/hammer/hammer_blockmap.c b/sys/vfs/hammer/hammer_blockmap.c --- a/sys/vfs/hammer/hammer_blockmap.c +++ b/sys/vfs/hammer/hammer_blockmap.c @@ -374,6 +374,7 @@ errorp, &buffer3); if (*errorp) { result_offset = 0; + hammer_unlock(&hmp->blkmap_lock); goto failed; } } @@ -602,8 +603,10 @@ if (bytes < HAMMER_BUFSIZE && (next_offset & HAMMER_BUFMASK) == 0) { if (!vm_paging_min_dnc(HAMMER_BUFSIZE / PAGE_SIZE)) { hammer_bnew(hmp, next_offset, errorp, &buffer3); - if (*errorp) + if (*errorp) { + hammer_unlock(&hmp->blkmap_lock); goto failed; + } } } |