]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: fix lost error return in btrfs_find_orphan_roots()
authorFilipe Manana <fdmanana@suse.com>
Sun, 8 Feb 2026 19:48:14 +0000 (19:48 +0000)
committerDavid Sterba <dsterba@suse.com>
Wed, 18 Feb 2026 14:25:54 +0000 (15:25 +0100)
If the call to btrfs_get_fs_root() returns an error different from -ENOENT
we break out of the loop and then return 0, losing the error. Fix this
by returning the error instead of breaking from the loop.

Reported-by: Chris Mason <clm@meta.com>
Link: https://lore.kernel.org/linux-btrfs/20260208185321.1128472-1-clm@meta.com/
Fixes: 8670a25ecb2f ("btrfs: use single return variable in btrfs_find_orphan_roots()")
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/root-tree.c

index 37a4173c0a0b746290e9b6f359acbf1c2771514e..d85a09ae1733785a07f592f629e1e9d896124994 100644 (file)
@@ -257,7 +257,7 @@ int btrfs_find_orphan_roots(struct btrfs_fs_info *fs_info)
                root = btrfs_get_fs_root(fs_info, root_objectid, false);
                ret = PTR_ERR_OR_ZERO(root);
                if (ret && ret != -ENOENT) {
-                       break;
+                       return ret;
                } else if (ret == -ENOENT) {
                        struct btrfs_trans_handle *trans;