lkml.org 
[lkml]   [2022]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] headers/uninline: Uninline single-use function: kobject_has_children()

    * Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:

    > On Tue, Jan 04, 2022 at 11:54:55AM +0100, Ingo Molnar wrote:
    > > There's one happy exception though, all the uninlining patches that
    > > uninline a single-call function are probably fine as-is:
    >
    > <snip>
    >
    > > 3443e75fd1f8 headers/uninline: Uninline single-use function: kobject_has_children()
    >
    > Let me go take this right now, no need for this to wait, it should be
    > out of kobject.h as you rightfully show there is only one user.

    Sure - here you go!

    Thanks,

    Ingo


    =============================>
    From: Ingo Molnar <mingo@kernel.org>
    Date: Sun, 29 Aug 2021 09:18:53 +0200
    Subject: [PATCH] headers/uninline: Uninline single-use function: kobject_has_children()

    This was the only usage of <linux/kref_api.h> in <linux/kobject_api.h>,
    so we'll able to decouple the two after this change.

    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    ---
    drivers/base/core.c | 17 +++++++++++++++++
    include/linux/kobject.h | 17 -----------------
    2 files changed, 17 insertions(+), 17 deletions(-)

    diff --git a/drivers/base/core.c b/drivers/base/core.c
    index fd034d742447..e1f2a5791c0e 100644
    --- a/drivers/base/core.c
    +++ b/drivers/base/core.c
    @@ -3029,6 +3029,23 @@ static inline struct kobject *get_glue_dir(struct device *dev)
    return dev->kobj.parent;
    }

    +/**
    + * kobject_has_children - Returns whether a kobject has children.
    + * @kobj: the object to test
    + *
    + * This will return whether a kobject has other kobjects as children.
    + *
    + * It does NOT account for the presence of attribute files, only sub
    + * directories. It also assumes there is no concurrent addition or
    + * removal of such children, and thus relies on external locking.
    + */
    +static inline bool kobject_has_children(struct kobject *kobj)
    +{
    + WARN_ON_ONCE(kref_read(&kobj->kref) == 0);
    +
    + return kobj->sd && kobj->sd->dir.subdirs;
    +}
    +
    /*
    * make sure cleaning up dir as the last step, we need to make
    * sure .release handler of kobject is run with holding the
    diff --git a/include/linux/kobject.h b/include/linux/kobject.h
    index efd56f990a46..e1c600a377f7 100644
    --- a/include/linux/kobject.h
    +++ b/include/linux/kobject.h
    @@ -117,23 +117,6 @@ extern void kobject_get_ownership(struct kobject *kobj,
    kuid_t *uid, kgid_t *gid);
    extern char *kobject_get_path(struct kobject *kobj, gfp_t flag);

    -/**
    - * kobject_has_children - Returns whether a kobject has children.
    - * @kobj: the object to test
    - *
    - * This will return whether a kobject has other kobjects as children.
    - *
    - * It does NOT account for the presence of attribute files, only sub
    - * directories. It also assumes there is no concurrent addition or
    - * removal of such children, and thus relies on external locking.
    - */
    -static inline bool kobject_has_children(struct kobject *kobj)
    -{
    - WARN_ON_ONCE(kref_read(&kobj->kref) == 0);
    -
    - return kobj->sd && kobj->sd->dir.subdirs;
    -}
    -
    struct kobj_type {
    void (*release)(struct kobject *kobj);
    const struct sysfs_ops *sysfs_ops;
    \
     
     \ /
      Last update: 2022-01-04 14:55    [W:8.348 / U:3.484 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site