On Thu, May 28, 2020 at 8:21 PM <wu000...@umn.edu> wrote: > > From: Qiushi Wu <wu000...@umn.edu> > > 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 <wu000...@umn.edu> > --- > 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 cdeedbf02646..55107565b319 100644 > --- a/drivers/cpuidle/sysfs.c > +++ b/drivers/cpuidle/sysfs.c > @@ -515,7 +515,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); > @@ -646,7 +646,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; > } > > @@ -740,7 +740,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; > } > > --
Applied as 5.8 material, thanks!