On Thu, Mar 23, 2023 at 12:58:30AM +0800, Yangtao Li wrote: > There are plenty of using kobject_del() and kobject_put() together > in the kernel tree. This patch wraps these two calls in a single helper. > > Signed-off-by: Yangtao Li <frank.li@xxxxxxxx> > --- > v3: > -convert to inline helper > v2: > -add kobject_del_and_put() users > include/linux/kobject.h | 13 +++++++++++++ > lib/kobject.c | 3 +-- > 2 files changed, 14 insertions(+), 2 deletions(-) > > diff --git a/include/linux/kobject.h b/include/linux/kobject.h > index bdab370a24f4..e21b7c22e355 100644 > --- a/include/linux/kobject.h > +++ b/include/linux/kobject.h > @@ -112,6 +112,19 @@ extern struct kobject * __must_check kobject_get_unless_zero( > struct kobject *kobj); > extern void kobject_put(struct kobject *kobj); > > +/** > + * kobject_del_and_put() - Delete kobject. > + * @kobj: object. > + * > + * Unlink kobject from hierarchy and decrement the refcount. > + * If refcount is 0, call kobject_cleanup(). > + */ > +static inline void kobject_del_and_put(struct kobject *kobj) > +{ > + kobject_del(kobj); > + kobject_put(kobj); > +} kobject_put() actually covers kobject removal automatically, which is single stage removal. So if you see the two called together, it is safe to kill kobject_del() directly. thanks, Ming