lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 0352/1157] crypto: sun8i-ss - fix error codes in allocate_flows()
    Date
    From: Dan Carpenter <dan.carpenter@oracle.com>

    [ Upstream commit d2765e1b9ac4b2d5a5d5bf17f468c9b3566c3770 ]

    These failure paths should return -ENOMEM. Currently they return
    success.

    Fixes: 359e893e8af4 ("crypto: sun8i-ss - rework handling of IV")
    Fixes: 8eec4563f152 ("crypto: sun8i-ss - do not allocate memory when handling hash requests")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Corentin Labbe <clabbe.montjoie@gmail.com>
    Tested-by: Corentin Labbe <clabbe.montjoie@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    .../crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 16 ++++++++++++----
    1 file changed, 12 insertions(+), 4 deletions(-)

    diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
    index 98593a0cff69..ac2329e2b0e5 100644
    --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
    +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
    @@ -528,25 +528,33 @@ static int allocate_flows(struct sun8i_ss_dev *ss)

    ss->flows[i].biv = devm_kmalloc(ss->dev, AES_BLOCK_SIZE,
    GFP_KERNEL | GFP_DMA);
    - if (!ss->flows[i].biv)
    + if (!ss->flows[i].biv) {
    + err = -ENOMEM;
    goto error_engine;
    + }

    for (j = 0; j < MAX_SG; j++) {
    ss->flows[i].iv[j] = devm_kmalloc(ss->dev, AES_BLOCK_SIZE,
    GFP_KERNEL | GFP_DMA);
    - if (!ss->flows[i].iv[j])
    + if (!ss->flows[i].iv[j]) {
    + err = -ENOMEM;
    goto error_engine;
    + }
    }

    /* the padding could be up to two block. */
    ss->flows[i].pad = devm_kmalloc(ss->dev, MAX_PAD_SIZE,
    GFP_KERNEL | GFP_DMA);
    - if (!ss->flows[i].pad)
    + if (!ss->flows[i].pad) {
    + err = -ENOMEM;
    goto error_engine;
    + }
    ss->flows[i].result = devm_kmalloc(ss->dev, SHA256_DIGEST_SIZE,
    GFP_KERNEL | GFP_DMA);
    - if (!ss->flows[i].result)
    + if (!ss->flows[i].result) {
    + err = -ENOMEM;
    goto error_engine;
    + }

    ss->flows[i].engine = crypto_engine_alloc_init(ss->dev, true);
    if (!ss->flows[i].engine) {
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-16 01:31    [W:2.956 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site