crypto: aead - Preserve in-place processing in old_crypt
[cascardo/linux.git] / crypto / aead.c
index 7c3d725..35c55e0 100644 (file)
@@ -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),