|
@@ -741,6 +741,16 @@ static int ext4_ext_insert_index(handle_t *handle, struct inode *inode,
|
|
logical, le32_to_cpu(curp->p_idx->ei_block));
|
|
logical, le32_to_cpu(curp->p_idx->ei_block));
|
|
return -EIO;
|
|
return -EIO;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if (unlikely(le16_to_cpu(curp->p_hdr->eh_entries)
|
|
|
|
+ >= le16_to_cpu(curp->p_hdr->eh_max))) {
|
|
|
|
+ EXT4_ERROR_INODE(inode,
|
|
|
|
+ "eh_entries %d >= eh_max %d!",
|
|
|
|
+ le16_to_cpu(curp->p_hdr->eh_entries),
|
|
|
|
+ le16_to_cpu(curp->p_hdr->eh_max));
|
|
|
|
+ return -EIO;
|
|
|
|
+ }
|
|
|
|
+
|
|
len = EXT_MAX_INDEX(curp->p_hdr) - curp->p_idx;
|
|
len = EXT_MAX_INDEX(curp->p_hdr) - curp->p_idx;
|
|
if (logical > le32_to_cpu(curp->p_idx->ei_block)) {
|
|
if (logical > le32_to_cpu(curp->p_idx->ei_block)) {
|
|
/* insert after */
|
|
/* insert after */
|
|
@@ -770,14 +780,6 @@ static int ext4_ext_insert_index(handle_t *handle, struct inode *inode,
|
|
ext4_idx_store_pblock(ix, ptr);
|
|
ext4_idx_store_pblock(ix, ptr);
|
|
le16_add_cpu(&curp->p_hdr->eh_entries, 1);
|
|
le16_add_cpu(&curp->p_hdr->eh_entries, 1);
|
|
|
|
|
|
- if (unlikely(le16_to_cpu(curp->p_hdr->eh_entries)
|
|
|
|
- > le16_to_cpu(curp->p_hdr->eh_max))) {
|
|
|
|
- EXT4_ERROR_INODE(inode,
|
|
|
|
- "eh_entries %d > eh_max %d!",
|
|
|
|
- le16_to_cpu(curp->p_hdr->eh_entries),
|
|
|
|
- le16_to_cpu(curp->p_hdr->eh_max));
|
|
|
|
- return -EIO;
|
|
|
|
- }
|
|
|
|
if (unlikely(ix > EXT_LAST_INDEX(curp->p_hdr))) {
|
|
if (unlikely(ix > EXT_LAST_INDEX(curp->p_hdr))) {
|
|
EXT4_ERROR_INODE(inode, "ix > EXT_LAST_INDEX!");
|
|
EXT4_ERROR_INODE(inode, "ix > EXT_LAST_INDEX!");
|
|
return -EIO;
|
|
return -EIO;
|