userns: Convert ext2 to use kuid/kgid where appropriate.
Acked-by: Serge Hallyn <serge.hallyn@canonical.com> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
This commit is contained in:
@@ -1293,6 +1293,8 @@ struct inode *ext2_iget (struct super_block *sb, unsigned long ino)
|
||||
struct inode *inode;
|
||||
long ret = -EIO;
|
||||
int n;
|
||||
uid_t i_uid;
|
||||
gid_t i_gid;
|
||||
|
||||
inode = iget_locked(sb, ino);
|
||||
if (!inode)
|
||||
@@ -1310,12 +1312,14 @@ struct inode *ext2_iget (struct super_block *sb, unsigned long ino)
|
||||
}
|
||||
|
||||
inode->i_mode = le16_to_cpu(raw_inode->i_mode);
|
||||
inode->i_uid = (uid_t)le16_to_cpu(raw_inode->i_uid_low);
|
||||
inode->i_gid = (gid_t)le16_to_cpu(raw_inode->i_gid_low);
|
||||
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 (!(test_opt (inode->i_sb, NO_UID32))) {
|
||||
inode->i_uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
|
||||
inode->i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
|
||||
i_uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
|
||||
i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
|
||||
}
|
||||
i_uid_write(inode, i_uid);
|
||||
i_gid_write(inode, i_gid);
|
||||
set_nlink(inode, le16_to_cpu(raw_inode->i_links_count));
|
||||
inode->i_size = le32_to_cpu(raw_inode->i_size);
|
||||
inode->i_atime.tv_sec = (signed)le32_to_cpu(raw_inode->i_atime);
|
||||
@@ -1413,8 +1417,8 @@ static int __ext2_write_inode(struct inode *inode, int do_sync)
|
||||
struct ext2_inode_info *ei = EXT2_I(inode);
|
||||
struct super_block *sb = inode->i_sb;
|
||||
ino_t ino = inode->i_ino;
|
||||
uid_t uid = inode->i_uid;
|
||||
gid_t gid = inode->i_gid;
|
||||
uid_t uid = i_uid_read(inode);
|
||||
gid_t gid = i_gid_read(inode);
|
||||
struct buffer_head * bh;
|
||||
struct ext2_inode * raw_inode = ext2_get_inode(sb, ino, &bh);
|
||||
int n;
|
||||
@@ -1529,8 +1533,8 @@ int ext2_setattr(struct dentry *dentry, struct iattr *iattr)
|
||||
|
||||
if (is_quota_modification(inode, iattr))
|
||||
dquot_initialize(inode);
|
||||
if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) ||
|
||||
(iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) {
|
||||
if ((iattr->ia_valid & ATTR_UID && !uid_eq(iattr->ia_uid, inode->i_uid)) ||
|
||||
(iattr->ia_valid & ATTR_GID && !gid_eq(iattr->ia_gid, inode->i_gid))) {
|
||||
error = dquot_transfer(inode, iattr);
|
||||
if (error)
|
||||
return error;
|
||||
|
Reference in New Issue
Block a user