|
@@ -586,8 +586,7 @@ int ecryptfs_decrypt_page(struct page *page)
|
|
|
{
|
|
|
struct inode *ecryptfs_inode;
|
|
|
struct ecryptfs_crypt_stat *crypt_stat;
|
|
|
- char *enc_extent_virt;
|
|
|
- struct page *enc_extent_page = NULL;
|
|
|
+ char *page_virt;
|
|
|
unsigned long extent_offset;
|
|
|
loff_t lower_offset;
|
|
|
int rc = 0;
|
|
@@ -596,19 +595,12 @@ int ecryptfs_decrypt_page(struct page *page)
|
|
|
crypt_stat =
|
|
|
&(ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat);
|
|
|
BUG_ON(!(crypt_stat->flags & ECRYPTFS_ENCRYPTED));
|
|
|
- enc_extent_page = alloc_page(GFP_USER);
|
|
|
- if (!enc_extent_page) {
|
|
|
- rc = -ENOMEM;
|
|
|
- ecryptfs_printk(KERN_ERR, "Error allocating memory for "
|
|
|
- "encrypted extent\n");
|
|
|
- goto out;
|
|
|
- }
|
|
|
|
|
|
lower_offset = lower_offset_for_page(crypt_stat, page);
|
|
|
- enc_extent_virt = kmap(enc_extent_page);
|
|
|
- rc = ecryptfs_read_lower(enc_extent_virt, lower_offset, PAGE_CACHE_SIZE,
|
|
|
+ page_virt = kmap(page);
|
|
|
+ rc = ecryptfs_read_lower(page_virt, lower_offset, PAGE_CACHE_SIZE,
|
|
|
ecryptfs_inode);
|
|
|
- kunmap(enc_extent_page);
|
|
|
+ kunmap(page);
|
|
|
if (rc < 0) {
|
|
|
ecryptfs_printk(KERN_ERR,
|
|
|
"Error attempting to read lower page; rc = [%d]\n",
|
|
@@ -619,7 +611,7 @@ int ecryptfs_decrypt_page(struct page *page)
|
|
|
for (extent_offset = 0;
|
|
|
extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size);
|
|
|
extent_offset++) {
|
|
|
- rc = ecryptfs_decrypt_extent(page, crypt_stat, enc_extent_page,
|
|
|
+ rc = ecryptfs_decrypt_extent(page, crypt_stat, page,
|
|
|
extent_offset);
|
|
|
if (rc) {
|
|
|
printk(KERN_ERR "%s: Error encrypting extent; "
|
|
@@ -628,9 +620,6 @@ int ecryptfs_decrypt_page(struct page *page)
|
|
|
}
|
|
|
}
|
|
|
out:
|
|
|
- if (enc_extent_page) {
|
|
|
- __free_page(enc_extent_page);
|
|
|
- }
|
|
|
return rc;
|
|
|
}
|
|
|
|