btrfs: Validate child tree block's level and first key
[sfrench/cifs-2.6.git] / fs / btrfs / print-tree.c
index 569205e651c7dd46c98a8fe3d0798140322d4ec3..4a8770485f776c59d21ef176f9c46099c19e43e9 100644 (file)
@@ -365,9 +365,13 @@ void btrfs_print_tree(struct extent_buffer *c)
                       btrfs_node_blockptr(c, i));
        }
        for (i = 0; i < nr; i++) {
-               struct extent_buffer *next = read_tree_block(fs_info,
-                                       btrfs_node_blockptr(c, i),
-                                       btrfs_node_ptr_generation(c, i));
+               struct btrfs_key first_key;
+               struct extent_buffer *next;
+
+               btrfs_node_key_to_cpu(c, &first_key, i);
+               next = read_tree_block(fs_info, btrfs_node_blockptr(c, i),
+                                      btrfs_node_ptr_generation(c, i),
+                                      level - 1, &first_key);
                if (IS_ERR(next)) {
                        continue;
                } else if (!extent_buffer_uptodate(next)) {