1 ext4 crypto: ext4_page_crypto() doesn't need a encryption context
3 Since ext4_page_crypto() doesn't need an encryption context (at least
4 not any more), this allows us to simplify a number function signature
5 and also allows us to avoid needing to allocate a context in
6 ext4_block_write_begin(). It also means we no longer need a separate
7 ext4_decrypt_one() function.
9 Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 fs/ext4/crypto.c | 28 +++++-----------------------
12 fs/ext4/ext4.h | 3 +--
13 fs/ext4/inode.c | 4 ++--
14 fs/ext4/readpage.c | 2 +-
15 4 files changed, 9 insertions(+), 28 deletions(-)
17 diff --git a/fs/ext4/crypto.c b/fs/ext4/crypto.c
18 index 4573155..3a5a7a2 100644
19 --- a/fs/ext4/crypto.c
20 +++ b/fs/ext4/crypto.c
21 @@ -253,8 +253,7 @@ typedef enum {
25 -static int ext4_page_crypto(struct ext4_crypto_ctx *ctx,
26 - struct inode *inode,
27 +static int ext4_page_crypto(struct inode *inode,
30 struct page *src_page,
31 @@ -353,7 +352,7 @@ struct page *ext4_encrypt(struct inode *inode,
32 if (IS_ERR(ciphertext_page))
34 ctx->w.control_page = plaintext_page;
35 - err = ext4_page_crypto(ctx, inode, EXT4_ENCRYPT, plaintext_page->index,
36 + err = ext4_page_crypto(inode, EXT4_ENCRYPT, plaintext_page->index,
37 plaintext_page, ciphertext_page);
39 ciphertext_page = ERR_PTR(err);
40 @@ -378,31 +377,14 @@ struct page *ext4_encrypt(struct inode *inode,
42 * Return: Zero on success, non-zero otherwise.
44 -int ext4_decrypt(struct ext4_crypto_ctx *ctx, struct page *page)
45 +int ext4_decrypt(struct page *page)
47 BUG_ON(!PageLocked(page));
49 - return ext4_page_crypto(ctx, page->mapping->host,
50 + return ext4_page_crypto(page->mapping->host,
51 EXT4_DECRYPT, page->index, page, page);
55 - * Convenience function which takes care of allocating and
56 - * deallocating the encryption context
58 -int ext4_decrypt_one(struct inode *inode, struct page *page)
62 - struct ext4_crypto_ctx *ctx = ext4_get_crypto_ctx(inode);
65 - return PTR_ERR(ctx);
66 - ret = ext4_decrypt(ctx, page);
67 - ext4_release_crypto_ctx(ctx);
71 int ext4_encrypted_zeroout(struct inode *inode, struct ext4_extent *ex)
73 struct ext4_crypto_ctx *ctx;
74 @@ -426,7 +408,7 @@ int ext4_encrypted_zeroout(struct inode *inode, struct ext4_extent *ex)
78 - err = ext4_page_crypto(ctx, inode, EXT4_ENCRYPT, lblk,
79 + err = ext4_page_crypto(inode, EXT4_ENCRYPT, lblk,
80 ZERO_PAGE(0), ciphertext_page);
83 diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
84 index 766b7f7..3f248c9 100644
87 @@ -2063,8 +2063,7 @@ void ext4_release_crypto_ctx(struct ext4_crypto_ctx *ctx);
88 void ext4_restore_control_page(struct page *data_page);
89 struct page *ext4_encrypt(struct inode *inode,
90 struct page *plaintext_page);
91 -int ext4_decrypt(struct ext4_crypto_ctx *ctx, struct page *page);
92 -int ext4_decrypt_one(struct inode *inode, struct page *page);
93 +int ext4_decrypt(struct page *page);
94 int ext4_encrypted_zeroout(struct inode *inode, struct ext4_extent *ex);
96 #ifdef CONFIG_EXT4_FS_ENCRYPTION
97 diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
98 index 612fbcf..ac2f0cf 100644
100 +++ b/fs/ext4/inode.c
101 @@ -965,7 +965,7 @@ static int ext4_block_write_begin(struct page *page, loff_t pos, unsigned len,
103 page_zero_new_buffers(page, from, to);
105 - err = ext4_decrypt_one(inode, page);
106 + err = ext4_decrypt(page);
110 @@ -3393,7 +3393,7 @@ static int __ext4_block_zero_page_range(handle_t *handle,
111 /* We expect the key to be set. */
112 BUG_ON(!ext4_has_encryption_key(inode));
113 BUG_ON(blocksize != PAGE_CACHE_SIZE);
114 - WARN_ON_ONCE(ext4_decrypt_one(inode, page));
115 + WARN_ON_ONCE(ext4_decrypt(page));
118 if (ext4_should_journal_data(inode)) {
119 diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c
120 index e26803f..a91e4bf 100644
121 --- a/fs/ext4/readpage.c
122 +++ b/fs/ext4/readpage.c
123 @@ -62,7 +62,7 @@ static void completion_pages(struct work_struct *work)
124 bio_for_each_segment_all(bv, bio, i) {
125 struct page *page = bv->bv_page;
127 - int ret = ext4_decrypt(ctx, page);
128 + int ret = ext4_decrypt(page);