While dentry interpose fails on create, the create is returned as having
failed, but this occurs after the lower file has been created.  This
results in the lower file being created and existing while the create
failed.

Remove the lower file if the interpose failed to keep the lower file system
consistent with the ecryptfs view.

Signed-off-by: John Johansen <[email protected]>
---
 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 eba14c5..fb7cc7d 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -127,6 +127,8 @@ ecryptfs_do_create(struct inode *directory_inode,
        rc = ecryptfs_interpose(lower_dentry, ecryptfs_dentry,
                                directory_inode->i_sb, 0);
        if (rc) {
+               /* underlying file created but failing create so remove */
+               vfs_unlink(lower_dir_dentry->d_inode, lower_dentry);
                ecryptfs_printk(KERN_ERR, "Failure in ecryptfs_interpose\n");
                goto out_lock;
        }
-- 
1.7.1


_______________________________________________
Mailing list: https://launchpad.net/~ecryptfs-devel
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~ecryptfs-devel
More help   : https://help.launchpad.net/ListHelp

Reply via email to