[PATCH] eCryptfs: Fix filesize on hard link creation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The filesize for both the source and destination is getting set to the
lower filesize on hard link creation. This patch saves and restores
the filesize so it is correct after the link operation is complete. It
also removes some extraneous initialization in
ecryptfs_read_header_region().

Signed-off-by: Michael Halcrow <[email protected]>

---

 fs/ecryptfs/crypto.c |    6 +++---
 fs/ecryptfs/inode.c  |    5 ++++-
 2 files changed, 7 insertions(+), 4 deletions(-)

6efbc9375f4bf6980336f2cb24c54269a631a002
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index e25239f..626a4c7 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -1129,10 +1129,10 @@ int ecryptfs_cipher_code_to_string(char 
 int ecryptfs_read_header_region(char *data, struct dentry *dentry,
 				struct nameidata *nd)
 {
-	int rc = 0;
-	struct vfsmount *mnt = NULL;
-	struct file *file = NULL;
+	struct vfsmount *mnt;
+	struct file *file;
 	mm_segment_t oldfs;
+	int rc;
 
 	mnt = mntget(nd->mnt);
 	file = dentry_open(dentry, mnt, O_RDONLY);
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 342b0fa..2a245d9 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -461,11 +461,13 @@ out:
 static int ecryptfs_link(struct dentry *old_dentry, struct inode *dir,
 			 struct dentry *new_dentry)
 {
-	int rc;
 	struct dentry *lower_old_dentry;
 	struct dentry *lower_new_dentry;
 	struct dentry *lower_dir_dentry;
+	u64 file_size_save;
+	int rc;
 
+	file_size_save = i_size_read(old_dentry->d_inode);
 	lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry);
 	lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry);
 	dget(lower_old_dentry);
@@ -481,6 +483,7 @@ static int ecryptfs_link(struct dentry *
 	ecryptfs_copy_attr_timesizes(dir, lower_new_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);
 out_lock:
 	unlock_dir(lower_dir_dentry);
 	dput(lower_new_dentry);
-- 
1.3.3

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux