On Wed, Apr 29, 2020 at 05:42:02PM +0300, Tero Kristo wrote:
>
> diff --git a/drivers/crypto/omap-crypto.c b/drivers/crypto/omap-crypto.c
> index cc88b7362bc2..cbc5a4151c3c 100644
> --- a/drivers/crypto/omap-crypto.c
> +++ b/drivers/crypto/omap-crypto.c
> @@ -178,11 +178,14 @@ static void omap_crypto_copy_data(struct scatterlist 
> *src,
>               amt = min(src->length - srco, dst->length - dsto);
>               amt = min(len, amt);
>  
> -             srcb = sg_virt(src) + srco;
> -             dstb = sg_virt(dst) + dsto;
> +             srcb = kmap_atomic(sg_page(src)) + srco + src->offset;
> +             dstb = kmap_atomic(sg_page(dst)) + dsto + dst->offset;
>  
>               memcpy(dstb, srcb, amt);
>  
> +             kunmap_atomic(srcb);
> +             kunmap_atomic(dstb);

With dst you also need to flush the cache.  Please refer to the
flush dcache call in include/crypto/scatterwalk.h.

Thanks,
-- 
Email: Herbert Xu <herb...@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Reply via email to