summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/disk-io.c10
-rw-r--r--fs/btrfs/tree-checker.c6
2 files changed, 16 insertions, 0 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 99dfd889b9f7..044981cf6df9 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -417,6 +417,16 @@ int btrfs_verify_level_key(struct extent_buffer *eb, int level,
417 */ 417 */
418 if (btrfs_header_generation(eb) > fs_info->last_trans_committed) 418 if (btrfs_header_generation(eb) > fs_info->last_trans_committed)
419 return 0; 419 return 0;
420
421 /* We have @first_key, so this @eb must have at least one item */
422 if (btrfs_header_nritems(eb) == 0) {
423 btrfs_err(fs_info,
424 "invalid tree nritems, bytenr=%llu nritems=0 expect >0",
425 eb->start);
426 WARN_ON(IS_ENABLED(CONFIG_BTRFS_DEBUG));
427 return -EUCLEAN;
428 }
429
420 if (found_level) 430 if (found_level)
421 btrfs_node_key_to_cpu(eb, &found_key, 0); 431 btrfs_node_key_to_cpu(eb, &found_key, 0);
422 else 432 else
diff --git a/fs/btrfs/tree-checker.c b/fs/btrfs/tree-checker.c
index 9645389a1187..43e488f5d063 100644
--- a/fs/btrfs/tree-checker.c
+++ b/fs/btrfs/tree-checker.c
@@ -1325,6 +1325,12 @@ static int check_leaf(struct extent_buffer *leaf, bool check_item_data)
1325 owner); 1325 owner);
1326 return -EUCLEAN; 1326 return -EUCLEAN;
1327 } 1327 }
1328 /* Unknown tree */
1329 if (owner == 0) {
1330 generic_err(leaf, 0,
1331 "invalid owner, root 0 is not defined");
1332 return -EUCLEAN;
1333 }
1328 return 0; 1334 return 0;
1329 } 1335 }
1330 1336