|
@@ -4732,6 +4732,12 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
|
|
goto bad_inode;
|
|
goto bad_inode;
|
|
raw_inode = ext4_raw_inode(&iloc);
|
|
raw_inode = ext4_raw_inode(&iloc);
|
|
|
|
|
|
|
|
+ if ((ino == EXT4_ROOT_INO) && (raw_inode->i_links_count == 0)) {
|
|
|
|
+ EXT4_ERROR_INODE(inode, "root inode unallocated");
|
|
|
|
+ ret = -EFSCORRUPTED;
|
|
|
|
+ goto bad_inode;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (EXT4_INODE_SIZE(inode->i_sb) > EXT4_GOOD_OLD_INODE_SIZE) {
|
|
if (EXT4_INODE_SIZE(inode->i_sb) > EXT4_GOOD_OLD_INODE_SIZE) {
|
|
ei->i_extra_isize = le16_to_cpu(raw_inode->i_extra_isize);
|
|
ei->i_extra_isize = le16_to_cpu(raw_inode->i_extra_isize);
|
|
if (EXT4_GOOD_OLD_INODE_SIZE + ei->i_extra_isize >
|
|
if (EXT4_GOOD_OLD_INODE_SIZE + ei->i_extra_isize >
|