aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTyler Hicks <tyhicks@linux.vnet.ibm.com>2010-03-23 18:09:02 -0500
committerTyler Hicks <tyhicks@linux.vnet.ibm.com>2010-04-19 14:42:15 -0500
commit3a8380c0754a7972668a46f645930910e304095c (patch)
tree85bc2f8551aa121f0a40f4b5bb24b7c58da35b16
parent133b8f9d632cc23715c6d72d1c5ac449e054a12a (diff)
downloadmrst-s0i3-test-3a8380c0754a7972668a46f645930910e304095c.tar.gz
mrst-s0i3-test-3a8380c0754a7972668a46f645930910e304095c.tar.xz
mrst-s0i3-test-3a8380c0754a7972668a46f645930910e304095c.zip
eCryptfs: Copy lower directory inode times and size on link
The timestamps and size of a lower inode involved in a link() call was being copied to the upper parent inode. Instead, we should be copying lower parent inode's timestamps and size to the upper parent inode. I discovered this bug using the POSIX test suite at Tuxera. Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
-rw-r--r--fs/ecryptfs/inode.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index efd4f47d530..15b424837c1 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -456,8 +456,8 @@ static int ecryptfs_link(struct dentry *old_dentry, struct inode *dir,
rc = ecryptfs_interpose(lower_new_dentry, new_dentry, dir->i_sb, 0);
if (rc)
goto out_lock;
- fsstack_copy_attr_times(dir, lower_new_dentry->d_inode);
- fsstack_copy_inode_size(dir, lower_new_dentry->d_inode);
+ fsstack_copy_attr_times(dir, lower_dir_dentry->d_inode);
+ fsstack_copy_inode_size(dir, lower_dir_dentry->d_inode);
old_dentry->d_inode->i_nlink =
ecryptfs_inode_to_lower(old_dentry->d_inode)->i_nlink;
i_size_write(new_dentry->d_inode, file_size_save);