Commit 9e1ba001 authored by Tahsin Erdogan's avatar Tahsin Erdogan Committed by Theodore Ts'o

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: default avatarTahsin Erdogan <tahsin@google.com>
Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent bd3b963b
...@@ -824,6 +824,7 @@ static struct inode *ext4_xattr_inode_create(handle_t *handle, ...@@ -824,6 +824,7 @@ static struct inode *ext4_xattr_inode_create(handle_t *handle,
struct inode *inode) struct inode *inode)
{ {
struct inode *ea_inode = NULL; struct inode *ea_inode = NULL;
uid_t owner[2] = { i_uid_read(inode), i_gid_read(inode) };
int err; int err;
/* /*
...@@ -831,7 +832,7 @@ static struct inode *ext4_xattr_inode_create(handle_t *handle, ...@@ -831,7 +832,7 @@ static struct inode *ext4_xattr_inode_create(handle_t *handle,
* in the same group, or nearby one. * in the same group, or nearby one.
*/ */
ea_inode = ext4_new_inode(handle, inode->i_sb->s_root->d_inode, 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); EXT4_EA_INODE_FL);
if (!IS_ERR(ea_inode)) { if (!IS_ERR(ea_inode)) {
ea_inode->i_op = &ext4_file_inode_operations; ea_inode->i_op = &ext4_file_inode_operations;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment