]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
eCryptfs: Copy up lower inode attrs in getattr
authorTyler Hicks <tyhicks@linux.vnet.ibm.com>
Tue, 11 Jan 2011 18:43:42 +0000 (12:43 -0600)
committerAK <andi@firstfloor.org>
Thu, 31 Mar 2011 18:58:09 +0000 (11:58 -0700)
commit 55f9cf6bbaa682958a7dd2755f883b768270c3ce upstream.

The lower filesystem may do some type of inode revalidation during a
getattr call. eCryptfs should take advantage of that by copying the
lower inode attributes to the eCryptfs inode after a call to
vfs_getattr() on the lower inode.

I originally wrote this fix while working on eCryptfs on nfsv3 support,
but discovered it also fixed an eCryptfs on ext4 nanosecond timestamp
bug that was reported.

https://bugs.launchpad.net/bugs/613873

Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
fs/ecryptfs/inode.c

index db9feb54d27340db70c6ea843b9d9d7c2b52687d..1681c620884bcbef1533d9d9a7d7ad32281c5014 100644 (file)
@@ -1003,6 +1003,8 @@ int ecryptfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
        rc = vfs_getattr(ecryptfs_dentry_to_lower_mnt(dentry),
                         ecryptfs_dentry_to_lower(dentry), &lower_stat);
        if (!rc) {
+               fsstack_copy_attr_all(dentry->d_inode,
+                                     ecryptfs_inode_to_lower(dentry->d_inode));
                generic_fillattr(dentry->d_inode, stat);
                stat->blocks = lower_stat.blocks;
        }