lkml.org 
[lkml]   [2021]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.11 070/342] crypto: qat - fix unmap invalid dma address
    Date
    From: Hui Tang <tanghui20@huawei.com>

    [ Upstream commit 792b32fad548281e1b7fe14df9063a96c54b32a2 ]

    'dma_mapping_error' return a negative value if 'dma_addr' is equal to
    'DMA_MAPPING_ERROR' not zero, so fix initialization of 'dma_addr'.

    Signed-off-by: Hui Tang <tanghui20@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/crypto/qat/qat_common/qat_algs.c | 11 +++++++++--
    1 file changed, 9 insertions(+), 2 deletions(-)

    diff --git a/drivers/crypto/qat/qat_common/qat_algs.c b/drivers/crypto/qat/qat_common/qat_algs.c
    index 31c7a206a629..362c2d18b292 100644
    --- a/drivers/crypto/qat/qat_common/qat_algs.c
    +++ b/drivers/crypto/qat/qat_common/qat_algs.c
    @@ -718,7 +718,7 @@ static int qat_alg_sgl_to_bufl(struct qat_crypto_instance *inst,
    struct qat_alg_buf_list *bufl;
    struct qat_alg_buf_list *buflout = NULL;
    dma_addr_t blp;
    - dma_addr_t bloutp = 0;
    + dma_addr_t bloutp;
    struct scatterlist *sg;
    size_t sz_out, sz = struct_size(bufl, bufers, n + 1);

    @@ -730,6 +730,9 @@ static int qat_alg_sgl_to_bufl(struct qat_crypto_instance *inst,
    if (unlikely(!bufl))
    return -ENOMEM;

    + for_each_sg(sgl, sg, n, i)
    + bufl->bufers[i].addr = DMA_MAPPING_ERROR;
    +
    blp = dma_map_single(dev, bufl, sz, DMA_TO_DEVICE);
    if (unlikely(dma_mapping_error(dev, blp)))
    goto err_in;
    @@ -763,10 +766,14 @@ static int qat_alg_sgl_to_bufl(struct qat_crypto_instance *inst,
    dev_to_node(&GET_DEV(inst->accel_dev)));
    if (unlikely(!buflout))
    goto err_in;
    +
    + bufers = buflout->bufers;
    + for_each_sg(sglout, sg, n, i)
    + bufers[i].addr = DMA_MAPPING_ERROR;
    +
    bloutp = dma_map_single(dev, buflout, sz_out, DMA_TO_DEVICE);
    if (unlikely(dma_mapping_error(dev, bloutp)))
    goto err_out;
    - bufers = buflout->bufers;
    for_each_sg(sglout, sg, n, i) {
    int y = sg_nctr;

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-05-10 14:02    [W:4.040 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site