diff options
author | Tyler Hicks <tyhicks@canonical.com> | 2011-11-21 17:31:02 -0600 |
---|---|---|
committer | Tyler Hicks <tyhicks@canonical.com> | 2011-11-23 15:39:38 -0600 |
commit | b59db43ad4434519feb338eacb01d77eb50825c5 (patch) | |
tree | ee978cf1ab736b3fc104b46b2491e7742e663dcf /fs/ecryptfs/ecryptfs_kernel.h | |
parent | 6fe4c6d466e95d31164f14b1ac4aefb51f0f4f82 (diff) | |
download | linux-stable-b59db43ad4434519feb338eacb01d77eb50825c5.tar.gz linux-stable-b59db43ad4434519feb338eacb01d77eb50825c5.tar.bz2 linux-stable-b59db43ad4434519feb338eacb01d77eb50825c5.zip |
eCryptfs: Prevent file create race condition
The file creation path prematurely called d_instantiate() and
unlock_new_inode() before the eCryptfs inode info was fully
allocated and initialized and before the eCryptfs metadata was written
to the lower file.
This could result in race conditions in subsequent file and inode
operations leading to unexpected error conditions or a null pointer
dereference while attempting to use the unallocated memory.
https://launchpad.net/bugs/813146
Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
Cc: stable@kernel.org
Diffstat (limited to 'fs/ecryptfs/ecryptfs_kernel.h')
-rw-r--r-- | fs/ecryptfs/ecryptfs_kernel.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/ecryptfs/ecryptfs_kernel.h b/fs/ecryptfs/ecryptfs_kernel.h index 54481a3b2c79..a9f29b12fbf2 100644 --- a/fs/ecryptfs/ecryptfs_kernel.h +++ b/fs/ecryptfs/ecryptfs_kernel.h @@ -584,9 +584,10 @@ int ecryptfs_init_crypt_ctx(struct ecryptfs_crypt_stat *crypt_stat); int ecryptfs_write_inode_size_to_metadata(struct inode *ecryptfs_inode); int ecryptfs_encrypt_page(struct page *page); int ecryptfs_decrypt_page(struct page *page); -int ecryptfs_write_metadata(struct dentry *ecryptfs_dentry); +int ecryptfs_write_metadata(struct dentry *ecryptfs_dentry, + struct inode *ecryptfs_inode); int ecryptfs_read_metadata(struct dentry *ecryptfs_dentry); -int ecryptfs_new_file_context(struct dentry *ecryptfs_dentry); +int ecryptfs_new_file_context(struct inode *ecryptfs_inode); void ecryptfs_write_crypt_stat_flags(char *page_virt, struct ecryptfs_crypt_stat *crypt_stat, size_t *written); |