Patch "btrfs: remove BUG_ON(!eie) in find_parent_nodes" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    btrfs: remove BUG_ON(!eie) in find_parent_nodes

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     btrfs-remove-bug_on-eie-in-find_parent_nodes.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit f3b7c277e9d3b9f8febc50f84312076252dc516c
Author: Josef Bacik <josef@xxxxxxxxxxxxxx>
Date:   Fri Nov 5 16:45:35 2021 -0400

    btrfs: remove BUG_ON(!eie) in find_parent_nodes
    
    [ Upstream commit 9f05c09d6baef789726346397438cca4ec43c3ee ]
    
    If we're looking for leafs that point to a data extent we want to record
    the extent items that point at our bytenr.  At this point we have the
    reference and we know for a fact that this leaf should have a reference
    to our bytenr.  However if there's some sort of corruption we may not
    find any references to our leaf, and thus could end up with eie == NULL.
    Replace this BUG_ON() with an ASSERT() and then return -EUCLEAN for the
    mortals.
    
    Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx>
    Reviewed-by: David Sterba <dsterba@xxxxxxxx>
    Signed-off-by: David Sterba <dsterba@xxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c
index 8b471579e26e1..baff31a147e7d 100644
--- a/fs/btrfs/backref.c
+++ b/fs/btrfs/backref.c
@@ -1366,10 +1366,18 @@ static int find_parent_nodes(struct btrfs_trans_handle *trans,
 				goto out;
 			if (!ret && extent_item_pos) {
 				/*
-				 * we've recorded that parent, so we must extend
-				 * its inode list here
+				 * We've recorded that parent, so we must extend
+				 * its inode list here.
+				 *
+				 * However if there was corruption we may not
+				 * have found an eie, return an error in this
+				 * case.
 				 */
-				BUG_ON(!eie);
+				ASSERT(eie);
+				if (!eie) {
+					ret = -EUCLEAN;
+					goto out;
+				}
 				while (eie->next)
 					eie = eie->next;
 				eie->next = ref->inode_list;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux