Messages in this thread | | | Subject | Re: [PATCH 01/11] kset: fix documentation for kset_register() | From | Yang Yingliang <> | Date | Fri, 21 Oct 2022 16:05:18 +0800 |
| |
On 2022/10/21 13:34, Luben Tuikov wrote: > On 2022-10-20 22:20, Yang Yingliang wrote: >> kset_register() is currently used in some places without calling >> kset_put() in error path, because the callers think it should be >> kset internal thing to do, but the driver core can not know what >> caller doing with that memory at times. The memory could be freed >> both in kset_put() and error path of caller, if it is called in >> kset_register(). >> >> So make the function documentation more explicit about calling >> kset_put() in the error path of caller. >> >> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> >> --- >> lib/kobject.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/lib/kobject.c b/lib/kobject.c >> index a0b2dbfcfa23..6da04353d974 100644 >> --- a/lib/kobject.c >> +++ b/lib/kobject.c >> @@ -834,6 +834,9 @@ EXPORT_SYMBOL_GPL(kobj_sysfs_ops); >> /** >> * kset_register() - Initialize and add a kset. >> * @k: kset. >> + * >> + * If this function returns an error, kset_put() must be called to >> + * properly clean up the memory associated with the object. >> */ > And I'd continue the sentence, with " ... with the object, > for instance the memory for the kset.kobj.name when kobj_set_name(&kset.kobj, format, ...) > was called before calling kset_register()." kobject_cleanup() not only frees name, but aslo calls ->release() to free another resources. > > This makes it clear what we want to make sure is freed, in case of an early error > from kset_register().
How about like this:
If this function returns an error, kset_put() must be called to clean up the name of kset object and other memory associated with the object.
> > Regards, > Luben > >> int kset_register(struct kset *k) >> { > .
| |