fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item);
 
+       /*
+        * Make sure the item contains at least inline header, so the file
+        * extent type is not some garbage.
+        */
+       if (item_size < BTRFS_FILE_EXTENT_INLINE_DATA_START) {
+               file_extent_err(leaf, slot,
+                               "invalid item size, have %u expect [%lu, %u)",
+                               item_size, BTRFS_FILE_EXTENT_INLINE_DATA_START,
+                               SZ_4K);
+               return -EUCLEAN;
+       }
        if (btrfs_file_extent_type(leaf, fi) >= BTRFS_NR_FILE_EXTENT_TYPES) {
                file_extent_err(leaf, slot,
                "invalid type for file extent, have %u expect range [0, %u]",