diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-06-12 00:33:29 +0300 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-06-12 01:04:20 +0300 |
commit | 43f54cd52f6eea2017505d2a3ac82d372c33749b (patch) | |
tree | ae6a3181588da88fe5021aa4676f12f64828a653 /fs/f2fs | |
parent | 7e8e754a4b722216d18418b36c4b8976e7418f2b (diff) |
f2fs crypto: add alloc_bounce_page
This patch adds alloc_bounce_page likewise ext4.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs')
-rw-r--r-- | fs/f2fs/crypto.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/fs/f2fs/crypto.c b/fs/f2fs/crypto.c index 75d62fff8960..4a62ef14e932 100644 --- a/fs/f2fs/crypto.c +++ b/fs/f2fs/crypto.c @@ -376,6 +376,15 @@ static int f2fs_page_crypto(struct f2fs_crypto_ctx *ctx, return 0; } +static struct page *alloc_bounce_page(struct f2fs_crypto_ctx *ctx) +{ + ctx->w.bounce_page = mempool_alloc(f2fs_bounce_page_pool, GFP_NOWAIT); + if (ctx->w.bounce_page == NULL) + return ERR_PTR(-ENOMEM); + ctx->flags |= F2FS_WRITE_PATH_FL; + return ctx->w.bounce_page; +} + /** * f2fs_encrypt() - Encrypts a page * @inode: The inode for which the encryption should take place @@ -405,19 +414,17 @@ struct page *f2fs_encrypt(struct inode *inode, return (struct page *)ctx; /* The encryption operation will require a bounce page. */ - ciphertext_page = mempool_alloc(f2fs_bounce_page_pool, GFP_NOWAIT); - if (!ciphertext_page) { - err = -ENOMEM; + ciphertext_page = alloc_bounce_page(ctx); + if (IS_ERR(ciphertext_page)) goto err_out; - } - ctx->flags |= F2FS_WRITE_PATH_FL; - ctx->w.bounce_page = ciphertext_page; ctx->w.control_page = plaintext_page; err = f2fs_page_crypto(ctx, inode, F2FS_ENCRYPT, plaintext_page->index, plaintext_page, ciphertext_page); - if (err) + if (err) { + ciphertext_page = ERR_PTR(err); goto err_out; + } SetPagePrivate(ciphertext_page); set_page_private(ciphertext_page, (unsigned long)ctx); @@ -426,7 +433,7 @@ struct page *f2fs_encrypt(struct inode *inode, err_out: f2fs_release_crypto_ctx(ctx); - return ERR_PTR(err); + return ciphertext_page; } /** |