All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tero Kristo <t-kristo@ti.com>
To: <herbert@gondor.apana.org.au>, <davem@davemloft.net>,
	<linux-crypto@vger.kernel.org>
Cc: <linux-omap@vger.kernel.org>
Subject: [RESEND PATCHv3 3/7] crypto: omap-crypto: fix userspace copied buffer access
Date: Wed, 27 May 2020 15:24:25 +0300	[thread overview]
Message-ID: <20200527122429.14888-4-t-kristo@ti.com> (raw)
In-Reply-To: <20200527122429.14888-1-t-kristo@ti.com>

In case buffers are copied from userspace, directly accessing the page
will most likely fail because it hasn't been mapped into the kernel
memory space. Fix the issue by forcing a kmap / kunmap within the
cleanup functionality.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
---
v3:
  - Added PageSlab() check to the cache flushing portion, and changed
    the used flush API to be flush_kernel_dcache_page()

 drivers/crypto/omap-crypto.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/crypto/omap-crypto.c b/drivers/crypto/omap-crypto.c
index cc88b7362bc2..94b2dba90f0d 100644
--- a/drivers/crypto/omap-crypto.c
+++ b/drivers/crypto/omap-crypto.c
@@ -178,11 +178,17 @@ 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);
 
+		if (!PageSlab(sg_page(dst)))
+			flush_kernel_dcache_page(sg_page(dst));
+
+		kunmap_atomic(srcb);
+		kunmap_atomic(dstb);
+
 		srco += amt;
 		dsto += amt;
 		len -= amt;
-- 
2.17.1

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

  parent reply	other threads:[~2020-05-27 12:24 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-27 12:24 [RESEND PATCHv3 0/7] crypto: omap: various fixes Tero Kristo
2020-05-27 12:24 ` [RESEND PATCHv3 1/7] crypto: omap-aes: avoid spamming console with self tests Tero Kristo
2020-05-27 12:24 ` [RESEND PATCHv3 2/7] crypto: omap-sham: force kernel driver usage for sha algos Tero Kristo
2020-05-27 12:24 ` Tero Kristo [this message]
2020-05-27 12:24 ` [RESEND PATCHv3 4/7] crypto: omap-sham: huge buffer access fixes Tero Kristo
2020-05-27 12:24 ` [RESEND PATCHv3 5/7] crypto: omap-sham: fix very small data size handling Tero Kristo
2020-05-27 12:24 ` [RESEND PATCHv3 6/7] crypto: omap-aes: prevent unregistering algorithms twice Tero Kristo
2020-05-27 12:24 ` [RESEND PATCHv3 7/7] crypto: omap-sham: add proper load balancing support for multicore Tero Kristo
2020-06-04 12:17 ` [RESEND PATCHv3 0/7] crypto: omap: various fixes Herbert Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200527122429.14888-4-t-kristo@ti.com \
    --to=t-kristo@ti.com \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.