]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
btrfs: remove BUG_ON() in find_parent_nodes()
authorJosef Bacik <josef@toxicpanda.com>
Fri, 5 Nov 2021 20:45:34 +0000 (16:45 -0400)
committerPaolo Pisati <paolo.pisati@canonical.com>
Fri, 28 Jan 2022 10:02:51 +0000 (11:02 +0100)
BugLink: https://bugs.launchpad.net/bugs/1959376
[ Upstream commit fcba0120edf88328524a4878d1d6f4ad39f2ec81 ]

We search for an extent entry with .offset = -1, which shouldn't be a
thing, but corruption happens.  Add an ASSERT() for the developers,
return -EUCLEAN for mortals.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
fs/btrfs/backref.c

index f735b8798ba1276d321899ef8d902ba0e1e63bc3..6b4b0f105a5724c5121fd18d375852b8a5ab7b21 100644 (file)
@@ -1214,7 +1214,12 @@ again:
        ret = btrfs_search_slot(NULL, fs_info->extent_root, &key, path, 0, 0);
        if (ret < 0)
                goto out;
-       BUG_ON(ret == 0);
+       if (ret == 0) {
+               /* This shouldn't happen, indicates a bug or fs corruption. */
+               ASSERT(ret != 0);
+               ret = -EUCLEAN;
+               goto out;
+       }
 
 #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
        if (trans && likely(trans->type != __TRANS_DUMMY) &&