lkml.org 
[lkml]   [2021]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 172/663] evm: Fix memleak in init_desc
    Date
    From: Dinghao Liu <dinghao.liu@zju.edu.cn>

    [ Upstream commit ccf11dbaa07b328fa469415c362d33459c140a37 ]

    tmp_tfm is allocated, but not freed on subsequent kmalloc failure, which
    leads to a memory leak. Free tmp_tfm.

    Fixes: d46eb3699502b ("evm: crypto hash replaced by shash")
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    [zohar@linux.ibm.com: formatted/reworded patch description]
    Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    security/integrity/evm/evm_crypto.c | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c
    index 168c3b78ac47b..a6dd47eb086da 100644
    --- a/security/integrity/evm/evm_crypto.c
    +++ b/security/integrity/evm/evm_crypto.c
    @@ -73,7 +73,7 @@ static struct shash_desc *init_desc(char type, uint8_t hash_algo)
    {
    long rc;
    const char *algo;
    - struct crypto_shash **tfm, *tmp_tfm;
    + struct crypto_shash **tfm, *tmp_tfm = NULL;
    struct shash_desc *desc;

    if (type == EVM_XATTR_HMAC) {
    @@ -118,13 +118,16 @@ unlock:
    alloc:
    desc = kmalloc(sizeof(*desc) + crypto_shash_descsize(*tfm),
    GFP_KERNEL);
    - if (!desc)
    + if (!desc) {
    + crypto_free_shash(tmp_tfm);
    return ERR_PTR(-ENOMEM);
    + }

    desc->tfm = *tfm;

    rc = crypto_shash_init(desc);
    if (rc) {
    + crypto_free_shash(tmp_tfm);
    kfree(desc);
    return ERR_PTR(rc);
    }
    --
    2.27.0


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