All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josef Bacik <josef@toxicpanda.com>
To: linux-btrfs@vger.kernel.org, kernel-team@fb.com
Cc: Anand Jain <anand.jain@oracle.com>
Subject: [PATCH v2 04/13] btrfs-progs: filesystem-show: close ctree once we're done
Date: Wed, 10 Nov 2021 15:07:55 -0500	[thread overview]
Message-ID: <0a5ead7ba7759ecf6da7fe19405e6df86fb8c6c0.1636574767.git.josef@toxicpanda.com> (raw)
In-Reply-To: <cover.1636574767.git.josef@toxicpanda.com>

Running with ASAN we won't pass the self tests because we leak the whole
fs_info with btrfs filesystem show.  Fix this by making sure we close
out the fs_info and clean up all of the memory and such.

Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 cmds/filesystem.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/cmds/filesystem.c b/cmds/filesystem.c
index 6a9e46d2..624d0288 100644
--- a/cmds/filesystem.c
+++ b/cmds/filesystem.c
@@ -655,6 +655,7 @@ static int cmd_filesystem_show(const struct cmd_struct *cmd,
 {
 	LIST_HEAD(all_uuids);
 	struct btrfs_fs_devices *fs_devices;
+	struct btrfs_root *root = NULL;
 	char *search = NULL;
 	int ret;
 	/* default, search both kernel and udev */
@@ -753,12 +754,8 @@ static int cmd_filesystem_show(const struct cmd_struct *cmd,
 
 devs_only:
 	if (type == BTRFS_ARG_REG) {
-		/*
-		 * Given input (search) is regular file.
-		 * We don't close the fs_info because it will free the device,
-		 * this is not a long-running process so it's fine
-		 */
-		if (open_ctree(search, btrfs_sb_offset(0), 0))
+		root = open_ctree(search, btrfs_sb_offset(0), 0);
+		if (root)
 			ret = 0;
 		else
 			ret = 1;
@@ -768,7 +765,7 @@ devs_only:
 
 	if (ret) {
 		error("blkid device scan returned %d", ret);
-		return 1;
+		goto out;
 	}
 
 	/*
@@ -779,13 +776,13 @@ devs_only:
 	ret = search_umounted_fs_uuids(&all_uuids, search, &found);
 	if (ret < 0) {
 		error("searching target device returned error %d", ret);
-		return 1;
+		goto out;
 	}
 
 	ret = map_seed_devices(&all_uuids);
 	if (ret) {
 		error("mapping seed devices returned error %d", ret);
-		return 1;
+		goto out;
 	}
 
 	list_for_each_entry(fs_devices, &all_uuids, list)
@@ -801,8 +798,10 @@ devs_only:
 		free_fs_devices(fs_devices);
 	}
 out:
+	if (root)
+		close_ctree(root);
 	free_seen_fsid(seen_fsid_hash);
-	return ret;
+	return !!ret;
 }
 static DEFINE_SIMPLE_COMMAND(filesystem_show, "show");
 
-- 
2.26.3


  parent reply	other threads:[~2021-11-10 20:08 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-10 20:07 [PATCH v2 00/13] btrfs-progs: extent tree v2 global root support prep work Josef Bacik
2021-11-10 20:07 ` [PATCH v2 01/13] btrfs-progs: check: fix set_extent_dirty range Josef Bacik
2021-11-10 20:07 ` [PATCH v2 02/13] btrfs-progs: simplify btrfs_make_block_group Josef Bacik
2021-11-10 20:07 ` [PATCH v2 03/13] btrfs-progs: check: don't walk down non fs-trees for qgroup check Josef Bacik
2021-11-10 20:07 ` Josef Bacik [this message]
2021-11-10 20:07 ` [PATCH v2 05/13] btrfs-progs: add a helper for setting up a root node Josef Bacik
2021-11-10 20:07 ` [PATCH v2 06/13] btrfs-progs: btrfs-shared: stop passing root to csum related functions Josef Bacik
2021-11-15 18:54   ` David Sterba
2021-11-10 20:07 ` [PATCH v2 07/13] btrfs-progs: check: stop passing csum root around Josef Bacik
2021-11-10 20:07 ` [PATCH v2 08/13] btrfs-progs: stop accessing ->csum_root directly Josef Bacik
2021-11-10 20:08 ` [PATCH v2 09/13] btrfs-progs: image: keep track of seen blocks when walking trees Josef Bacik
2021-11-10 20:08 ` [PATCH v2 10/13] btrfs-progs: common: move btrfs_fix_block_accounting to repair.c Josef Bacik
2021-11-10 20:08 ` [PATCH v2 11/13] btrfs-progs: check: abstract out the used marking helpers Josef Bacik
2021-11-10 20:08 ` [PATCH v2 12/13] btrfs-progs: check: move btrfs_mark_used_tree_blocks to common Josef Bacik
2021-11-10 20:08 ` [PATCH v2 13/13] btrfs-progs: mark reloc roots as used Josef Bacik
2021-11-10 20:11 ` [PATCH v2 00/13] btrfs-progs: extent tree v2 global root support prep work Josef Bacik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0a5ead7ba7759ecf6da7fe19405e6df86fb8c6c0.1636574767.git.josef@toxicpanda.com \
    --to=josef@toxicpanda.com \
    --cc=anand.jain@oracle.com \
    --cc=kernel-team@fb.com \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.