DF-3113 / fix.diff
--- a/sys/vfs/hammer/hammer_ioctl.c +++ b/sys/vfs/hammer/hammer_ioctl.c @@ -730,10 +730,11 @@ hammer_ioc_add_snapshot(hammer_transaction_t trans, hammer_inode_t ip, again: /* * Look for keys starting after the previous iteration, or at * the beginning if snap->count is 0. */ error = hammer_init_cursor(trans, &cursor, &ip->cache[0], NULL); if (error) { hammer_done_cursor(&cursor); + hammer_unlock(&hmp->snapshot_lock); return(error); } @@ -807,10 +808,11 @@ hammer_ioc_del_snapshot(hammer_transaction_t trans, hammer_inode_t ip, again: /* * Look for keys starting after the previous iteration, or at * the beginning if snap->count is 0. */ error = hammer_init_cursor(trans, &cursor, &ip->cache[0], NULL); if (error) { hammer_done_cursor(&cursor); + hammer_unlock(&hmp->snapshot_lock); return(error); } |