diff --git a/cmds-inspect.c b/cmds-inspect.c index 4347c1ac..e02b53a3 100644 --- a/cmds-inspect.c +++ b/cmds-inspect.c @@ -212,8 +212,10 @@ static int cmd_logical_resolve(int argc, char **argv) if (getpath) { name = btrfs_list_path_for_root(fd, root); - if (IS_ERR(name)) - return PTR_ERR(name); + if (IS_ERR(name)) { + ret = PTR_ERR(name); + goto out; + } if (!name) { path_ptr[-1] = '\0'; path_fd = fd; @@ -231,6 +233,8 @@ static int cmd_logical_resolve(int argc, char **argv) } } __ino_to_path_fd(inum, path_fd, verbose, full_path); + if (path_fd != fd) + close(path_fd); } else { printf("inode %llu offset %llu root %llu\n", inum, offset, root); @@ -238,6 +242,8 @@ static int cmd_logical_resolve(int argc, char **argv) } out: + if (fd >= 0) + close(fd); free(inodes); return ret; }