On 08/05/2020 08:08, Herbert Xu wrote:
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.

Ok, let me try that out, flushing a single page should be fine (meaning not catastrophic to performance.)

-Tero
--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. 
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

Reply via email to