From a70837ab1e33ceee70b5bc8c1d5969b897e57b72 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Thu, 24 Jan 2013 10:53:49 -0800 Subject: [PATCH] btrfs-progs: don't leak fds in logical resolve Signed-off-by: Zach Brown --- cmds-inspect.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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; }