diff options
Diffstat (limited to 'fs/ecryptfs/file.c')
-rw-r--r-- | fs/ecryptfs/file.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c index 53d0141b9c20..ca4e83750214 100644 --- a/fs/ecryptfs/file.c +++ b/fs/ecryptfs/file.c | |||
@@ -169,6 +169,19 @@ out: | |||
169 | return rc; | 169 | return rc; |
170 | } | 170 | } |
171 | 171 | ||
172 | static int ecryptfs_mmap(struct file *file, struct vm_area_struct *vma) | ||
173 | { | ||
174 | struct file *lower_file = ecryptfs_file_to_lower(file); | ||
175 | /* | ||
176 | * Don't allow mmap on top of file systems that don't support it | ||
177 | * natively. If FILESYSTEM_MAX_STACK_DEPTH > 2 or ecryptfs | ||
178 | * allows recursive mounting, this will need to be extended. | ||
179 | */ | ||
180 | if (!lower_file->f_op->mmap) | ||
181 | return -ENODEV; | ||
182 | return generic_file_mmap(file, vma); | ||
183 | } | ||
184 | |||
172 | /** | 185 | /** |
173 | * ecryptfs_open | 186 | * ecryptfs_open |
174 | * @inode: inode specifying file to open | 187 | * @inode: inode specifying file to open |
@@ -403,7 +416,7 @@ const struct file_operations ecryptfs_main_fops = { | |||
403 | #ifdef CONFIG_COMPAT | 416 | #ifdef CONFIG_COMPAT |
404 | .compat_ioctl = ecryptfs_compat_ioctl, | 417 | .compat_ioctl = ecryptfs_compat_ioctl, |
405 | #endif | 418 | #endif |
406 | .mmap = generic_file_mmap, | 419 | .mmap = ecryptfs_mmap, |
407 | .open = ecryptfs_open, | 420 | .open = ecryptfs_open, |
408 | .flush = ecryptfs_flush, | 421 | .flush = ecryptfs_flush, |
409 | .release = ecryptfs_release, | 422 | .release = ecryptfs_release, |