|
@@ -643,6 +643,13 @@ static noinline int check_leaf(struct btrfs_root *root,
|
|
|
return -EUCLEAN;
|
|
|
}
|
|
|
|
|
|
+ /* Also check if the item pointer overlaps with btrfs item. */
|
|
|
+ if (btrfs_item_nr_offset(slot) + sizeof(struct btrfs_item) >
|
|
|
+ btrfs_item_ptr_offset(leaf, slot)) {
|
|
|
+ CORRUPT("slot overlap with its data", leaf, root, slot);
|
|
|
+ return -EUCLEAN;
|
|
|
+ }
|
|
|
+
|
|
|
prev_key.objectid = key.objectid;
|
|
|
prev_key.type = key.type;
|
|
|
prev_key.offset = key.offset;
|