On Mon 20-04-15 17:25:51, Andreas Dilger wrote:
On Apr 19, 2015, at 7:39 PM, Li Xi [off-list ref] wrote:
quoted
This patch adds a new internal field of ext4 inode to save project
identifier. Also a new flag EXT4_INODE_PROJINHERIT is added for
inheriting project ID from parent directory.
quoted
@@ -3930,12 +3939,18 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
inode->i_mode = le16_to_cpu(raw_inode->i_mode);
i_uid = (uid_t)le16_to_cpu(raw_inode->i_uid_low);
i_gid = (gid_t)le16_to_cpu(raw_inode->i_gid_low);
+ if (EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_PROJECT))
+ i_projid = (projid_t)le32_to_cpu(raw_inode->i_projid);
This needs to check if EXT4_PROJID_INHERIT_FL is set, and if i_projid
fits in i_extra_isize, otherwise it could be accessing a garbage value
beyond i_extra_isize.
We don't need to check EXT4_PROJID_INHERIT_FL. That is completely
independent of whether project ID is stored or not. We should check whether
project ID fits into the inode in this place, that is correct.
Honza
--
Jan Kara [off-list ref]
SUSE Labs, CR