File tree Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Original file line number Diff line number Diff line change @@ -1007,6 +1007,7 @@ static int check_inode_item(struct extent_buffer *leaf,
1007
1007
struct btrfs_inode_item * iitem ;
1008
1008
u64 super_gen = btrfs_super_generation (fs_info -> super_copy );
1009
1009
u32 valid_mask = (S_IFMT | S_ISUID | S_ISGID | S_ISVTX | 0777 );
1010
+ const u32 item_size = btrfs_item_size (leaf , slot );
1010
1011
u32 mode ;
1011
1012
int ret ;
1012
1013
u32 flags ;
@@ -1016,6 +1017,12 @@ static int check_inode_item(struct extent_buffer *leaf,
1016
1017
if (unlikely (ret < 0 ))
1017
1018
return ret ;
1018
1019
1020
+ if (unlikely (item_size != sizeof (* iitem ))) {
1021
+ generic_err (leaf , slot , "invalid item size: has %u expect %zu" ,
1022
+ item_size , sizeof (* iitem ));
1023
+ return - EUCLEAN ;
1024
+ }
1025
+
1019
1026
iitem = btrfs_item_ptr (leaf , slot , struct btrfs_inode_item );
1020
1027
1021
1028
/* Here we use super block generation + 1 to handle log tree */
You can’t perform that action at this time.
0 commit comments