]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
fs: btrfs: Prevent error pointer dereference in list_subvolums()
authorDan Carpenter <dan.carpenter@linaro.org>
Wed, 26 Jul 2023 06:59:04 +0000 (09:59 +0300)
committerTom Rini <trini@konsulko.com>
Tue, 8 Aug 2023 21:05:43 +0000 (17:05 -0400)
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>
fs/btrfs/subvolume.c

index d446e7a2c418cfc90b5537304709a234fb4a566c..68ca7e48e48e94f587ffa2f547780b460f4c7b2d 100644 (file)
@@ -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)