crypto: omap-sham - Verify page zone of scatterlists before starting DMA
authorTero Kristo <t-kristo@ti.com>
Tue, 27 Feb 2018 13:30:34 +0000 (15:30 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 9 Mar 2018 14:45:36 +0000 (22:45 +0800)
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>
Reported-by: Aparna Balasubramanian <aparnab@ti.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/omap-sham.c

index 86b89ace836f56f69b706db40412961f42acbeac..ce398b7a2b1c542258e33f40ab12572bbcfc19e4 100644 (file)
@@ -759,6 +759,13 @@ static int omap_sham_align_sgs(struct scatterlist *sg,
        while (nbytes > 0 && sg_tmp) {
                n++;
 
+#ifdef CONFIG_ZONE_DMA
+               if (page_zonenum(sg_page(sg_tmp)) != ZONE_DMA) {
+                       aligned = false;
+                       break;
+               }
+#endif
+
                if (offset < sg_tmp->length) {
                        if (!IS_ALIGNED(offset + sg_tmp->offset, 4)) {
                                aligned = false;