From: Herbert Xu Date: Wed, 27 May 2015 06:37:29 +0000 (+0800) Subject: crypto: aead - Preserve in-place processing in old_crypt X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=b455eb80f17471797ba9cb904fe86af1df35f073;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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 --- diff --git a/crypto/aead.c b/crypto/aead.c index 7c3d725bd264..35c55e04fcbc 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),