diff options
Diffstat (limited to 'fs/ext4')
| -rw-r--r-- | fs/ext4/inode.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 0eb64e8f9602..9d512fa80d28 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
| @@ -4965,6 +4965,13 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino) | |||
| 4965 | inode->i_op = &ext4_dir_inode_operations; | 4965 | inode->i_op = &ext4_dir_inode_operations; |
| 4966 | inode->i_fop = &ext4_dir_operations; | 4966 | inode->i_fop = &ext4_dir_operations; |
| 4967 | } else if (S_ISLNK(inode->i_mode)) { | 4967 | } else if (S_ISLNK(inode->i_mode)) { |
| 4968 | /* VFS does not allow setting these so must be corruption */ | ||
| 4969 | if (IS_APPEND(inode) || IS_IMMUTABLE(inode)) { | ||
| 4970 | EXT4_ERROR_INODE(inode, | ||
| 4971 | "immutable or append flags not allowed on symlinks"); | ||
| 4972 | ret = -EFSCORRUPTED; | ||
| 4973 | goto bad_inode; | ||
| 4974 | } | ||
| 4968 | if (ext4_encrypted_inode(inode)) { | 4975 | if (ext4_encrypted_inode(inode)) { |
| 4969 | inode->i_op = &ext4_encrypted_symlink_inode_operations; | 4976 | inode->i_op = &ext4_encrypted_symlink_inode_operations; |
| 4970 | ext4_set_aops(inode); | 4977 | ext4_set_aops(inode); |
