We were trying to be clever zapping out of the cache only the required
length out of scatter list on AEAD request completion and getting it
wrong.
As Knuth said: "when in douby, use brute force". Zap the whole length of
the scatter list.
Signed-off-by: Gilad Ben-Yossef <[email protected]>
---
drivers/crypto/ccree/cc_buffer_mgr.c | 18 ++----------------
1 file changed, 2 insertions(+), 16 deletions(-)
diff --git a/drivers/crypto/ccree/cc_buffer_mgr.c b/drivers/crypto/ccree/cc_buffer_mgr.c
index 0ee1c52da0a4..0774bf54fcab 100644
--- a/drivers/crypto/ccree/cc_buffer_mgr.c
+++ b/drivers/crypto/ccree/cc_buffer_mgr.c
@@ -568,11 +568,7 @@ void cc_unmap_aead_request(struct device *dev, struct aead_request *req)
{
struct aead_req_ctx *areq_ctx = aead_request_ctx(req);
unsigned int hw_iv_size = areq_ctx->hw_iv_size;
- struct crypto_aead *tfm = crypto_aead_reqtfm(req);
struct cc_drvdata *drvdata = dev_get_drvdata(dev);
- u32 dummy;
- bool chained;
- u32 size_to_unmap = 0;
if (areq_ctx->mac_buf_dma_addr) {
dma_unmap_single(dev, areq_ctx->mac_buf_dma_addr,
@@ -629,22 +625,12 @@ void cc_unmap_aead_request(struct device *dev, struct aead_request *req)
dev_dbg(dev, "Unmapping src sgl: req->src=%pK areq_ctx->src.nents=%u areq_ctx->assoc.nents=%u assoclen:%u cryptlen=%u\n",
sg_virt(req->src), areq_ctx->src.nents, areq_ctx->assoc.nents,
req->assoclen, req->cryptlen);
- size_to_unmap = req->assoclen + req->cryptlen;
- if (areq_ctx->gen_ctx.op_type == DRV_CRYPTO_DIRECTION_ENCRYPT)
- size_to_unmap += areq_ctx->req_authsize;
- if (areq_ctx->is_gcm4543)
- size_to_unmap += crypto_aead_ivsize(tfm);
- dma_unmap_sg(dev, req->src,
- cc_get_sgl_nents(dev, req->src, size_to_unmap,
- &dummy, &chained),
- DMA_BIDIRECTIONAL);
+ dma_unmap_sg(dev, req->src, sg_nents(req->src), DMA_BIDIRECTIONAL);
if (req->src != req->dst) {
dev_dbg(dev, "Unmapping dst sgl: req->dst=%pK\n",
sg_virt(req->dst));
- dma_unmap_sg(dev, req->dst,
- cc_get_sgl_nents(dev, req->dst, size_to_unmap,
- &dummy, &chained),
+ dma_unmap_sg(dev, req->dst, sg_nents(req->dst),
DMA_BIDIRECTIONAL);
}
if (drvdata->coherent &&
--
2.21.0
On Mon, May 20, 2019 at 02:50:23PM +0300, Gilad Ben-Yossef wrote:
> We were trying to be clever zapping out of the cache only the required
> length out of scatter list on AEAD request completion and getting it
> wrong.
>
> As Knuth said: "when in douby, use brute force". Zap the whole length of
> the scatter list.
>
> Signed-off-by: Gilad Ben-Yossef <[email protected]>
> ---
> drivers/crypto/ccree/cc_buffer_mgr.c | 18 ++----------------
> 1 file changed, 2 insertions(+), 16 deletions(-)
This does not apply on top of my latest 4.19 tree with the current
pending queue applied, nor does it apply to 5.1 or 5.0.
How about waiting a few days and resending after I do the next round of
stable updates, so you can rebase on top of them easier?
thanks,
greg k-h
On Mon, May 20, 2019 at 3:09 PM Greg KH <[email protected]> wrote:
>
> On Mon, May 20, 2019 at 02:50:23PM +0300, Gilad Ben-Yossef wrote:
> > We were trying to be clever zapping out of the cache only the required
> > length out of scatter list on AEAD request completion and getting it
> > wrong.
> >
> > As Knuth said: "when in douby, use brute force". Zap the whole length of
> > the scatter list.
> >
> > Signed-off-by: Gilad Ben-Yossef <[email protected]>
> > ---
> > drivers/crypto/ccree/cc_buffer_mgr.c | 18 ++----------------
> > 1 file changed, 2 insertions(+), 16 deletions(-)
>
> This does not apply on top of my latest 4.19 tree with the current
> pending queue applied, nor does it apply to 5.1 or 5.0.
>
> How about waiting a few days and resending after I do the next round of
> stable updates, so you can rebase on top of them easier?
Yes, will do.
Thanks,
Gilad
--
Gilad Ben-Yossef
Chief Coffee Drinker
values of β will give rise to dom!