summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2015-05-27 14:37:29 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2015-05-28 11:23:17 +0800
commit19009e8c06657783c0c398070be715f176737d49 (patch)
tree67529b4974c55525099a62f39f0b98efdd183013 /crypto
parent71cc8534a7591a759b627e313a9b298dac958c62 (diff)
downloadlinux-crypto-19009e8c06657783c0c398070be715f176737d49.tar.gz
linux-crypto-19009e8c06657783c0c398070be715f176737d49.zip
crypto: aead - Preserve in-place processing in old_crypt
This patch tries to preserve in-place processing in old_crypt as various algorithms are optimised for in-place processing where src == dst. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/aead.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/aead.c b/crypto/aead.c
index 7c3d725b..35c55e04 100644
--- a/crypto/aead.c
+++ b/crypto/aead.c
@@ -107,7 +107,8 @@ static int old_crypt(struct aead_request *req,
return crypt(req);
src = scatterwalk_ffwd(nreq->srcbuf, req->src, req->assoclen);
- dst = scatterwalk_ffwd(nreq->dstbuf, req->dst, req->assoclen);
+ dst = req->src == req->dst ?
+ src : scatterwalk_ffwd(nreq->dstbuf, req->dst, req->assoclen);
aead_request_set_tfm(&nreq->subreq, aead);
aead_request_set_callback(&nreq->subreq, aead_request_flags(req),