From: Chandan Rajendra Date: Mon, 20 May 2019 16:29:51 +0000 (-0700) Subject: ext4: decrypt only the needed block in __ext4_block_zero_page_range() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=ec39a36867440995c9675b2800f5ddaeb51b024e;p=linux.git ext4: decrypt only the needed block in __ext4_block_zero_page_range() In __ext4_block_zero_page_range(), only decrypt the block that actually needs to be decrypted, rather than assuming blocksize == PAGE_SIZE and decrypting the whole page. This is in preparation for allowing encryption on ext4 filesystems with blocksize != PAGE_SIZE. Signed-off-by: Chandan Rajendra (EB: rebase onto previous changes, improve the commit message, and use bh_offset()) Signed-off-by: Eric Biggers --- diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 8e48feddad83e..f65357735a1ad 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -4075,9 +4075,8 @@ static int __ext4_block_zero_page_range(handle_t *handle, if (S_ISREG(inode->i_mode) && IS_ENCRYPTED(inode)) { /* We expect the key to be set. */ BUG_ON(!fscrypt_has_encryption_key(inode)); - BUG_ON(blocksize != PAGE_SIZE); WARN_ON_ONCE(fscrypt_decrypt_pagecache_blocks( - page, PAGE_SIZE, 0)); + page, blocksize, bh_offset(bh))); } } if (ext4_should_journal_data(inode)) {