diff --git a/btrfs-map-logical.c b/btrfs-map-logical.c index fd0286d5..f421a50f 100644 --- a/btrfs-map-logical.c +++ b/btrfs-map-logical.c @@ -329,6 +329,11 @@ int main(int argc, char **argv) goto out_close_fd; if (ret > 0) break; + /* check again if there is overlap. */ + if (cur_logical + cur_len < logical || + cur_logical >= logical + bytes) + break; + real_logical = max(logical, cur_logical); real_len = min(logical + bytes, cur_logical + cur_len) - real_logical;