|
@@ -677,7 +677,10 @@ static noinline int drop_one_dir_item(struct btrfs_trans_handle *trans,
|
|
|
btrfs_release_path(root, path);
|
|
|
|
|
|
inode = read_one_inode(root, location.objectid);
|
|
|
- BUG_ON(!inode);
|
|
|
+ if (!inode) {
|
|
|
+ kfree(name);
|
|
|
+ return -EIO;
|
|
|
+ }
|
|
|
|
|
|
ret = link_to_fixup_dir(trans, root, path, location.objectid);
|
|
|
BUG_ON(ret);
|
|
@@ -816,7 +819,10 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
|
|
|
return -ENOENT;
|
|
|
|
|
|
inode = read_one_inode(root, key->objectid);
|
|
|
- BUG_ON(!inode);
|
|
|
+ if (!inode) {
|
|
|
+ iput(dir);
|
|
|
+ return -EIO;
|
|
|
+ }
|
|
|
|
|
|
ref_ptr = btrfs_item_ptr_offset(eb, slot);
|
|
|
ref_end = ref_ptr + btrfs_item_size_nr(eb, slot);
|
|
@@ -1054,7 +1060,8 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
|
|
|
|
|
|
btrfs_release_path(root, path);
|
|
|
inode = read_one_inode(root, key.offset);
|
|
|
- BUG_ON(!inode);
|
|
|
+ if (!inode)
|
|
|
+ return -EIO;
|
|
|
|
|
|
ret = fixup_inode_link_count(trans, root, inode);
|
|
|
BUG_ON(ret);
|
|
@@ -1090,7 +1097,8 @@ static noinline int link_to_fixup_dir(struct btrfs_trans_handle *trans,
|
|
|
struct inode *inode;
|
|
|
|
|
|
inode = read_one_inode(root, objectid);
|
|
|
- BUG_ON(!inode);
|
|
|
+ if (!inode)
|
|
|
+ return -EIO;
|
|
|
|
|
|
key.objectid = BTRFS_TREE_LOG_FIXUP_OBJECTID;
|
|
|
btrfs_set_key_type(&key, BTRFS_ORPHAN_ITEM_KEY);
|
|
@@ -1177,7 +1185,8 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans,
|
|
|
int ret;
|
|
|
|
|
|
dir = read_one_inode(root, key->objectid);
|
|
|
- BUG_ON(!dir);
|
|
|
+ if (!dir)
|
|
|
+ return -EIO;
|
|
|
|
|
|
name_len = btrfs_dir_name_len(eb, di);
|
|
|
name = kmalloc(name_len, GFP_NOFS);
|
|
@@ -1433,7 +1442,10 @@ again:
|
|
|
btrfs_release_path(root, path);
|
|
|
btrfs_release_path(log, log_path);
|
|
|
inode = read_one_inode(root, location.objectid);
|
|
|
- BUG_ON(!inode);
|
|
|
+ if (!inode) {
|
|
|
+ kfree(name);
|
|
|
+ return -EIO;
|
|
|
+ }
|
|
|
|
|
|
ret = link_to_fixup_dir(trans, root,
|
|
|
path, location.objectid);
|