diff --git a/usr/src/uts/common/fs/zfs/range_tree.c b/usr/src/uts/common/fs/zfs/range_tree.c index 88e741803476..ebf4a1c7e9e5 100644 --- a/usr/src/uts/common/fs/zfs/range_tree.c +++ b/usr/src/uts/common/fs/zfs/range_tree.c @@ -265,10 +265,14 @@ range_tree_add_fill(void *arg, uint64_t start, uint64_t size, uint64_t fill) return; } ASSERT0(fill); - if (rs->rs_start < start) - range_tree_add(rt, rs->rs_end, end); - else - range_tree_add(rt, start, rs->rs_start); + if (rs->rs_start < start) { + ASSERT3U(end, >, rs->rs_end); + range_tree_add(rt, rs->rs_end, end - + rs->rs_end); + } else { + ASSERT3U(rs->rs_start, >, start); + range_tree_add(rt, start, rs->rs_start - start); + } return; } } else {