|
@@ -169,6 +169,19 @@ 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 specifying file to open
|
|
@@ -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,
|