ext4: ea_inode owner should be the same as the inode owner
Quota charging is based on the ownership of the inode. Currently, the xattr inode owner is set to the caller which may be different from the parent inode owner. This is inconsistent with how quota is charged for xattr block and regular data block writes. Signed-off-by: Tahsin Erdogan <tahsin@google.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:

committato da
Theodore Ts'o

parent
bd3b963b27
commit
9e1ba00161
@@ -824,6 +824,7 @@ static struct inode *ext4_xattr_inode_create(handle_t *handle,
|
||||
struct inode *inode)
|
||||
{
|
||||
struct inode *ea_inode = NULL;
|
||||
uid_t owner[2] = { i_uid_read(inode), i_gid_read(inode) };
|
||||
int err;
|
||||
|
||||
/*
|
||||
@@ -831,7 +832,7 @@ static struct inode *ext4_xattr_inode_create(handle_t *handle,
|
||||
* in the same group, or nearby one.
|
||||
*/
|
||||
ea_inode = ext4_new_inode(handle, inode->i_sb->s_root->d_inode,
|
||||
S_IFREG | 0600, NULL, inode->i_ino + 1, NULL,
|
||||
S_IFREG | 0600, NULL, inode->i_ino + 1, owner,
|
||||
EXT4_EA_INODE_FL);
|
||||
if (!IS_ERR(ea_inode)) {
|
||||
ea_inode->i_op = &ext4_file_inode_operations;
|
||||
|
Fai riferimento in un nuovo problema
Block a user