lkml.org 
[lkml]   [2021]   [Sep]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] cpuidle: Fix memory leaks
    Date
    Commit c343bf1ba5ef ("cpuidle: Fix three reference count leaks")
    fixes the cleanup of kobjects; however, it removes kfree() calls
    altogether, leading to memory leaks.

    Fix those and also defer the initialization of dev->kobj_dev until
    after the error check, so that we do not end up with a dangling
    pointer.

    Signed-off-by: Anel Orazgaliyeva <anelkz@amazon.de>
    Suggested-by: Aman Priyadarshi <apeureka@amazon.de>
    ---
    drivers/cpuidle/sysfs.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c
    index 53ec9585ccd4..469e18547d06 100644
    --- a/drivers/cpuidle/sysfs.c
    +++ b/drivers/cpuidle/sysfs.c
    @@ -488,6 +488,7 @@ static int cpuidle_add_state_sysfs(struct cpuidle_device *device)
    &kdev->kobj, "state%d", i);
    if (ret) {
    kobject_put(&kobj->kobj);
    + kfree(kobj);
    goto error_state;
    }
    cpuidle_add_s2idle_attr_group(kobj);
    @@ -619,6 +620,7 @@ static int cpuidle_add_driver_sysfs(struct cpuidle_device *dev)
    &kdev->kobj, "driver");
    if (ret) {
    kobject_put(&kdrv->kobj);
    + kfree(kdrv);
    return ret;
    }

    @@ -705,7 +707,6 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev)
    if (!kdev)
    return -ENOMEM;
    kdev->dev = dev;
    - dev->kobj_dev = kdev;

    init_completion(&kdev->kobj_unregister);

    @@ -713,9 +714,11 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev)
    "cpuidle");
    if (error) {
    kobject_put(&kdev->kobj);
    + kfree(kdev);
    return error;
    }

    + dev->kobj_dev = kdev;
    kobject_uevent(&kdev->kobj, KOBJ_ADD);

    return 0;
    --
    2.32.0



    Amazon Development Center Germany GmbH
    Krausenstr. 38
    10117 Berlin
    Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
    Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
    Sitz: Berlin
    Ust-ID: DE 289 237 879



    \
     
     \ /
      Last update: 2021-09-06 20:36    [W:3.823 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site