summaryrefslogtreecommitdiff
path: root/fs/ubifs/crypto.c
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2019-05-20 19:29:46 +0300
committerEric Biggers <ebiggers@google.com>2019-05-28 20:27:53 +0300
commit41adbcb7267b0060682576d523956160b5c617bd (patch)
tree41926790732b2cfaaf7d3b34858826d9fb2e0e1f /fs/ubifs/crypto.c
parent930d453995bdf4a0000bd162dfd4b70c6d7329f8 (diff)
downloadlinux-41adbcb7267b0060682576d523956160b5c617bd.tar.xz
fscrypt: introduce fscrypt_decrypt_block_inplace()
Currently fscrypt_decrypt_page() does one of two logically distinct things depending on whether FS_CFLG_OWN_PAGES is set in the filesystem's fscrypt_operations: decrypt a pagecache page in-place, or decrypt a filesystem block in-place in any page. Currently these happen to share the same implementation, but this conflates the notion of blocks and pages. It also makes it so that all callers have to provide inode and lblk_num, when fscrypt could determine these itself for pagecache pages. Therefore, move the FS_CFLG_OWN_PAGES behavior into a new function fscrypt_decrypt_block_inplace(). This mirrors fscrypt_encrypt_block_inplace(). This is in preparation for allowing encryption on ext4 filesystems with blocksize != PAGE_SIZE. Reviewed-by: Chandan Rajendra <chandan@linux.ibm.com> Signed-off-by: Eric Biggers <ebiggers@google.com>
Diffstat (limited to 'fs/ubifs/crypto.c')
-rw-r--r--fs/ubifs/crypto.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/ubifs/crypto.c b/fs/ubifs/crypto.c
index 032efdad2e66..22be7aeb96c4 100644
--- a/fs/ubifs/crypto.c
+++ b/fs/ubifs/crypto.c
@@ -64,10 +64,11 @@ int ubifs_decrypt(const struct inode *inode, struct ubifs_data_node *dn,
}
ubifs_assert(c, dlen <= UBIFS_BLOCK_SIZE);
- err = fscrypt_decrypt_page(inode, virt_to_page(&dn->data), dlen,
- offset_in_page(&dn->data), block);
+ err = fscrypt_decrypt_block_inplace(inode, virt_to_page(&dn->data),
+ dlen, offset_in_page(&dn->data),
+ block);
if (err) {
- ubifs_err(c, "fscrypt_decrypt_page failed: %i", err);
+ ubifs_err(c, "fscrypt_decrypt_block_inplace() failed: %d", err);
return err;
}
*out_len = clen;