|
@@ -4965,6 +4965,13 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
|
|
|
inode->i_op = &ext4_dir_inode_operations;
|
|
|
inode->i_fop = &ext4_dir_operations;
|
|
|
} else if (S_ISLNK(inode->i_mode)) {
|
|
|
+ /* VFS does not allow setting these so must be corruption */
|
|
|
+ if (IS_APPEND(inode) || IS_IMMUTABLE(inode)) {
|
|
|
+ EXT4_ERROR_INODE(inode,
|
|
|
+ "immutable or append flags not allowed on symlinks");
|
|
|
+ ret = -EFSCORRUPTED;
|
|
|
+ goto bad_inode;
|
|
|
+ }
|
|
|
if (ext4_encrypted_inode(inode)) {
|
|
|
inode->i_op = &ext4_encrypted_symlink_inode_operations;
|
|
|
ext4_set_aops(inode);
|