crypto: ccree - do not copy zero size MLLI table
authorGilad Ben-Yossef <gilad@benyossef.com>
Thu, 18 Apr 2019 13:38:55 +0000 (16:38 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 25 Apr 2019 07:38:15 +0000 (15:38 +0800)
When we are given a 0 sized cryptlen and assoclen in
a scatterlist with two entries we were falsely trying to
create a zero length MLLI table, causing the HW to choke.
Don't try to copy a zero sized MLLI table.

Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/ccree/cc_aead.c

index d9d1c2c1c4d622521316756e92c4f8734b78f1bc..446b0c461a35ea2f9761a572e8caa664027a14df 100644 (file)
@@ -1196,9 +1196,9 @@ static void cc_mlli_to_sram(struct aead_request *req,
        struct cc_aead_ctx *ctx = crypto_aead_ctx(tfm);
        struct device *dev = drvdata_to_dev(ctx->drvdata);
 
-       if (req_ctx->assoc_buff_type == CC_DMA_BUF_MLLI ||
+       if ((req_ctx->assoc_buff_type == CC_DMA_BUF_MLLI ||
            req_ctx->data_buff_type == CC_DMA_BUF_MLLI ||
-           !req_ctx->is_single_pass) {
+           !req_ctx->is_single_pass) && req_ctx->mlli_params.mlli_len) {
                dev_dbg(dev, "Copy-to-sram: mlli_dma=%08x, mlli_size=%u\n",
                        (unsigned int)ctx->drvdata->mlli_sram_addr,
                        req_ctx->mlli_params.mlli_len);