diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c index a9c5cc6c0bc58950cf9f57cff8c89d9ce33b9c43..60e789a9cac85f142d093b472a51aeee7cbf08c4 100644 --- a/fs/ubifs/file.c +++ b/fs/ubifs/file.c @@ -1594,6 +1594,15 @@ static const struct vm_operations_struct ubifs_file_vm_ops = { static int ubifs_file_mmap(struct file *file, struct vm_area_struct *vma) { int err; + struct inode *inode = file->f_mapping->host; + + if (ubifs_crypt_is_encrypted(inode)) { + err = fscrypt_get_encryption_info(inode); + if (err) + return -EACCES; + if (!fscrypt_has_encryption_key(inode)) + return -ENOKEY; + } err = generic_file_mmap(file, vma); if (err)