diff options
Diffstat (limited to 'fs/ecryptfs')
| -rw-r--r-- | fs/ecryptfs/crypto.c | 8 | ||||
| -rw-r--r-- | fs/ecryptfs/file.c | 19 | ||||
| -rw-r--r-- | fs/ecryptfs/kthread.c | 13 | ||||
| -rw-r--r-- | fs/ecryptfs/main.c | 3 | 
4 files changed, 23 insertions, 20 deletions
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c index 0d8eb3455b34..e5e29f8c920b 100644 --- a/fs/ecryptfs/crypto.c +++ b/fs/ecryptfs/crypto.c @@ -45,7 +45,7 @@   * ecryptfs_to_hex   * @dst: Buffer to take hex character representation of contents of   *       src; must be at least of size (src_size * 2) - * @src: Buffer to be converted to a hex string respresentation + * @src: Buffer to be converted to a hex string representation   * @src_size: number of bytes to convert   */  void ecryptfs_to_hex(char *dst, char *src, size_t src_size) @@ -60,7 +60,7 @@ void ecryptfs_to_hex(char *dst, char *src, size_t src_size)   * ecryptfs_from_hex   * @dst: Buffer to take the bytes from src hex; must be at least of   *       size (src_size / 2) - * @src: Buffer to be converted from a hex string respresentation to raw value + * @src: Buffer to be converted from a hex string representation to raw value   * @dst_size: size of dst buffer, or number of hex characters pairs to convert   */  void ecryptfs_from_hex(char *dst, char *src, int dst_size) @@ -953,7 +953,7 @@ struct ecryptfs_cipher_code_str_map_elem {  };  /* Add support for additional ciphers by adding elements here. The - * cipher_code is whatever OpenPGP applicatoins use to identify the + * cipher_code is whatever OpenPGP applications use to identify the   * ciphers. List in order of probability. */  static struct ecryptfs_cipher_code_str_map_elem  ecryptfs_cipher_code_str_map[] = { @@ -1410,7 +1410,7 @@ int ecryptfs_read_and_validate_xattr_region(struct dentry *dentry,   *   * Common entry point for reading file metadata. From here, we could   * retrieve the header information from the header region of the file, - * the xattr region of the file, or some other repostory that is + * the xattr region of the file, or some other repository that is   * stored separately from the file itself. The current implementation   * supports retrieving the metadata information from the file contents   * and from the xattr region. diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c index 7000b96b783e..ca4e83750214 100644 --- a/fs/ecryptfs/file.c +++ b/fs/ecryptfs/file.c @@ -169,9 +169,22 @@ out:  	return rc;  } +static int ecryptfs_mmap(struct file *file, struct vm_area_struct *vma) +{ +	struct file *lower_file = ecryptfs_file_to_lower(file); +	/* +	 * Don't allow mmap on top of file systems that don't support it +	 * natively.  If FILESYSTEM_MAX_STACK_DEPTH > 2 or ecryptfs +	 * allows recursive mounting, this will need to be extended. +	 */ +	if (!lower_file->f_op->mmap) +		return -ENODEV; +	return generic_file_mmap(file, vma); +} +  /**   * ecryptfs_open - * @inode: inode speciying file to open + * @inode: inode specifying file to open   * @file: Structure to return filled in   *   * Opens the file specified by inode. @@ -240,7 +253,7 @@ out:  /**   * ecryptfs_dir_open - * @inode: inode speciying file to open + * @inode: inode specifying file to open   * @file: Structure to return filled in   *   * Opens the file specified by inode. @@ -403,7 +416,7 @@ const struct file_operations ecryptfs_main_fops = {  #ifdef CONFIG_COMPAT  	.compat_ioctl = ecryptfs_compat_ioctl,  #endif -	.mmap = generic_file_mmap, +	.mmap = ecryptfs_mmap,  	.open = ecryptfs_open,  	.flush = ecryptfs_flush,  	.release = ecryptfs_release, diff --git a/fs/ecryptfs/kthread.c b/fs/ecryptfs/kthread.c index e818f5ac7a26..866bb18efefe 100644 --- a/fs/ecryptfs/kthread.c +++ b/fs/ecryptfs/kthread.c @@ -25,7 +25,6 @@  #include <linux/slab.h>  #include <linux/wait.h>  #include <linux/mount.h> -#include <linux/file.h>  #include "ecryptfs_kernel.h"  struct ecryptfs_open_req { @@ -148,7 +147,7 @@ int ecryptfs_privileged_open(struct file **lower_file,  	flags |= IS_RDONLY(d_inode(lower_dentry)) ? O_RDONLY : O_RDWR;  	(*lower_file) = dentry_open(&req.path, flags, cred);  	if (!IS_ERR(*lower_file)) -		goto have_file; +		goto out;  	if ((flags & O_ACCMODE) == O_RDONLY) {  		rc = PTR_ERR((*lower_file));  		goto out; @@ -166,16 +165,8 @@ int ecryptfs_privileged_open(struct file **lower_file,  	mutex_unlock(&ecryptfs_kthread_ctl.mux);  	wake_up(&ecryptfs_kthread_ctl.wait);  	wait_for_completion(&req.done); -	if (IS_ERR(*lower_file)) { +	if (IS_ERR(*lower_file))  		rc = PTR_ERR(*lower_file); -		goto out; -	} -have_file: -	if ((*lower_file)->f_op->mmap == NULL) { -		fput(*lower_file); -		*lower_file = NULL; -		rc = -EMEDIUMTYPE; -	}  out:  	return rc;  } diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c index 1698132d0e57..612004495141 100644 --- a/fs/ecryptfs/main.c +++ b/fs/ecryptfs/main.c @@ -738,8 +738,7 @@ static void ecryptfs_free_kmem_caches(void)  		struct ecryptfs_cache_info *info;  		info = &ecryptfs_cache_infos[i]; -		if (*(info->cache)) -			kmem_cache_destroy(*(info->cache)); +		kmem_cache_destroy(*(info->cache));  	}  }  |