aboutsummaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@linaro.org>2023-07-26 09:59:04 +0300
committerTom Rini <trini@konsulko.com>2023-08-08 17:05:43 -0400
commitc331efd08766aa610aa14c957856ef5b0fa915df (patch)
tree406d397a264ad31bee75b899e4ea2581a4f94574 /fs
parentd8ac619a172451f46efd421d280b639c224b3de6 (diff)
downloadu-boot-c331efd08766aa610aa14c957856ef5b0fa915df.zip
u-boot-c331efd08766aa610aa14c957856ef5b0fa915df.tar.gz
u-boot-c331efd08766aa610aa14c957856ef5b0fa915df.tar.bz2
fs: btrfs: Prevent error pointer dereference in list_subvolums()
If btrfs_read_fs_root() fails with -ENOENT, then we go to the next entry. Fine. But if it fails for a different reason then we need to clean up and return an error code. In the current code it doesn't clean up but instead dereferences "root" and crashes. Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> Reviewed-by: Marek BehĂșn <kabel@kernel.org> Reviewed-by: Qu Wenruo <wqu@suse.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/subvolume.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/subvolume.c b/fs/btrfs/subvolume.c
index d446e7a..68ca7e4 100644
--- a/fs/btrfs/subvolume.c
+++ b/fs/btrfs/subvolume.c
@@ -199,6 +199,7 @@ static int list_subvolums(struct btrfs_fs_info *fs_info)
ret = PTR_ERR(root);
if (ret == -ENOENT)
goto next;
+ goto out;
}
ret = list_one_subvol(root, result);
if (ret < 0)