summaryrefslogtreecommitdiffstats
path: root/drivers/crypto/omap-crypto.c
diff options
context:
space:
mode:
authorTero Kristo <t-kristo@ti.com>2018-02-27 14:30:35 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2018-03-09 15:45:36 +0100
commit065fa2523da83c674d8533144d9c9bac986ccf80 (patch)
tree411c080f249ac79b7f0f010d2f8742fab5597594 /drivers/crypto/omap-crypto.c
parentcrypto: omap-sham - Verify page zone of scatterlists before starting DMA (diff)
downloadlinux-065fa2523da83c674d8533144d9c9bac986ccf80.tar.xz
linux-065fa2523da83c674d8533144d9c9bac986ccf80.zip
crypto: omap-crypto - Verify page zone scatterlists before starting DMA
In certain platforms like DRA7xx having memory > 2GB with LPAE enabled has a constraint that DMA can be done with the initial 2GB and marks it as ZONE_DMA. But openssl when used with cryptodev does not make sure that input buffer is DMA capable. So, adding a check to verify if the input buffer is capable of DMA. Signed-off-by: Tero Kristo <t-kristo@ti.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/omap-crypto.c')
-rw-r--r--drivers/crypto/omap-crypto.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/crypto/omap-crypto.c b/drivers/crypto/omap-crypto.c
index 23e37779317e..2c42e4b4a6e9 100644
--- a/drivers/crypto/omap-crypto.c
+++ b/drivers/crypto/omap-crypto.c
@@ -104,6 +104,10 @@ static int omap_crypto_check_sg(struct scatterlist *sg, int total, int bs,
return OMAP_CRYPTO_NOT_ALIGNED;
if (!IS_ALIGNED(sg->length, bs))
return OMAP_CRYPTO_NOT_ALIGNED;
+#ifdef CONFIG_ZONE_DMA
+ if (page_zonenum(sg_page(sg)) != ZONE_DMA)
+ return OMAP_CRYPTO_NOT_ALIGNED;
+#endif
len += sg->length;
sg = sg_next(sg);