[PATCH 1/1] eCryptfs: Copy up lower inode attrs after setting lower xattr

Colin King colin.king at canonical.com
Mon Mar 12 21:01:37 UTC 2012

From: Colin Ian King <colin.king at canonical.com>

After passing through a ->setxattr() call, eCryptfs needs to copy the
inode attributes from the lower inode to the eCryptfs inode, as they
may have changed in the lower filesystem's ->setxattr() path.

One example is if an extended attribute containing a POSIX Access
Control List is being set. The new ACL may cause the lower filesystem to
modify the mode of the lower inode and the eCryptfs inode would need to
be updated to reflect the new mode.


Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
Reported-by: Sebastien Bacher <seb128 at ubuntu.com>
Cc: John Johansen <john.johansen at canonical.com>
Cc: <stable at vger.kernel.org>
(backport of upstream commit 5d58bd2bb0e9b3576a5ae26879a73e6c30cd3914)
Signed-off-by: Colin Ian King <colin.king at canonical.com>
 fs/ecryptfs/inode.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 90a6087..645da17 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -1035,6 +1035,8 @@ ecryptfs_setxattr(struct dentry *dentry, const char *name, const void *value,
 	rc = lower_dentry->d_inode->i_op->setxattr(lower_dentry, name, value,
 						   size, flags);
+	if (!rc)
+		fsstack_copy_attr_all(dentry->d_inode, lower_dentry->d_inode, NULL);
 	return rc;

More information about the kernel-team mailing list