lkml.org 
[lkml]   [2020]   [Jun]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 183/267] cpuidle: Fix three reference count leaks
    Date
    From: Qiushi Wu <wu000273@umn.edu>

    [ Upstream commit c343bf1ba5efcbf2266a1fe3baefec9cc82f867f ]

    kobject_init_and_add() takes reference even when it fails.
    If this function returns an error, kobject_put() must be called to
    properly clean up the memory associated with the object.

    Previous commit "b8eb718348b8" fixed a similar problem.

    Signed-off-by: Qiushi Wu <wu000273@umn.edu>
    [ rjw: Subject ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/cpuidle/sysfs.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c
    index e754c7aae7f7..66979dc33680 100644
    --- a/drivers/cpuidle/sysfs.c
    +++ b/drivers/cpuidle/sysfs.c
    @@ -467,7 +467,7 @@ static int cpuidle_add_state_sysfs(struct cpuidle_device *device)
    ret = kobject_init_and_add(&kobj->kobj, &ktype_state_cpuidle,
    &kdev->kobj, "state%d", i);
    if (ret) {
    - kfree(kobj);
    + kobject_put(&kobj->kobj);
    goto error_state;
    }
    cpuidle_add_s2idle_attr_group(kobj);
    @@ -598,7 +598,7 @@ static int cpuidle_add_driver_sysfs(struct cpuidle_device *dev)
    ret = kobject_init_and_add(&kdrv->kobj, &ktype_driver_cpuidle,
    &kdev->kobj, "driver");
    if (ret) {
    - kfree(kdrv);
    + kobject_put(&kdrv->kobj);
    return ret;
    }

    @@ -692,7 +692,7 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev)
    error = kobject_init_and_add(&kdev->kobj, &ktype_cpuidle, &cpu_dev->kobj,
    "cpuidle");
    if (error) {
    - kfree(kdev);
    + kobject_put(&kdev->kobj);
    return error;
    }

    --
    2.25.1


    \
     
     \ /
      Last update: 2020-06-19 18:16    [W:4.358 / U:0.764 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site