eCryptfs: Unlink lower inode when ecryptfs_create() fails
authorTyler Hicks <tyhicks@canonical.com>
Tue, 22 May 2012 20:09:50 +0000 (15:09 -0500)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 17 Oct 2012 02:49:51 +0000 (03:49 +0100)
commit04661578e516400ca013a5bba87a2868bfb31610
treed26489f1432ce9d62b735edb965e6b64861f274f
parent9864b931b1185d463c05ef7dff840f4e0d20c605
eCryptfs: Unlink lower inode when ecryptfs_create() fails

commit 8bc2d3cf612994a960c2e8eaea37f6676f67082a upstream.

ecryptfs_create() creates a lower inode, allocates an eCryptfs inode,
initializes the eCryptfs inode and cryptographic metadata attached to
the inode, and then writes the metadata to the header of the file.

If an error was to occur after the lower inode was created, an empty
lower file would be left in the lower filesystem. This is a problem
because ecryptfs_open() refuses to open any lower files which do not
have the appropriate metadata in the file header.

This patch properly unlinks the lower inode when an error occurs in the
later stages of ecryptfs_create(), reducing the chance that an empty
lower file will be left in the lower filesystem.

https://launchpad.net/bugs/872905

Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
Cc: John Johansen <john.johansen@canonical.com>
Cc: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
fs/ecryptfs/inode.c