linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Tejun Heo <tj@kernel.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Joel Stanley <joel@jms.id.au>
Subject: Re: [PATCH 2/2] drivers: core: Remove glue dirs from sysfs earlier
Date: Mon, 2 Jul 2018 19:15:33 -0700	[thread overview]
Message-ID: <CA+55aFy927VYjFDwe9Zy_M+XFNxSFh2HLFcQ25pm8AMNXBUoQA@mail.gmail.com> (raw)
In-Reply-To: <213dd8fa77629e04277e68552068581da881e7e4.camel@kernel.crashing.org>

On Mon, Jul 2, 2018 at 5:57 PM Benjamin Herrenschmidt
<benh@kernel.crashing.org> wrote:
>
> I'll have a look see if I can find a way to check that the sysfs dir is
> empty without adding that childcount, that would at least alleviate
> some of your objection, and would probably make the patch
> smaller/simpler.

That would definitely make me happier.

Right now we already remove the actual device node sysfs associations
synchronously with "kobject_del()" (even if it still then stays around
as a kobject), and that does the remove for the object itself - just
not the glue directory.

If we then just did a "if glue dir is empty, delete the glue dir too"
in cleanup_glue_dir(), at least ther patch would be prettier.

I *think* that should be easy. Maybe. Something almost, but not quite,
entirely unlike the below UNTESTED hack?

It's whitespace-damaged on purpose. It's probably broken shit. DO NOT
USE UNDER ANY CIRCUMSTANCES.  Think of it more as a "something like
this might work, but probably doesn't". Maybe it gives you an idea,
although that idea might be "Linus has finally lost it".

I suspect it's broken because kernfs has this notion of inactive
nodes, so just testing for the rbtree being empty is probably wrong. I
think maybe it needs to test for there not being any active nodes, but
then you'd need the kernfs_mutex etc, so that would make things much
worse.

I really haven't touched the kernfs code much, thus the "this may be
complete and utter garbage" warning.

Adding Tejun to the participants, he should know. Or Greg, who has
been silent, presumably because he's still getting over his crazy
travels.

                Linus

---

    --- a/drivers/base/core.c
   +++ b/drivers/base/core.c
   @@ -1585,6 +1585,12 @@ static inline struct kobject
*get_glue_dir(struct device *dev)
        return dev->kobj.parent;
    }

   +static inline bool has_children(struct kobject *dir)
   +{
   +    struct kernfs_node *kn = dir->sd;
   +    return kn && kn->dir.children.rb_node;
   +}
   +
    /*
     * make sure cleaning up dir as the last step, we need to make
     * sure .release handler of kobject is run with holding the
   @@ -1597,6 +1603,10 @@ static void cleanup_glue_dir(struct device
*dev, struct kobject *glue_dir)
                return;

        mutex_lock(&gdp_mutex);
   -    kobject_put(glue_dir);
   +    if (has_children(glue_dir))
   +            kobject_put(glue_dir);
   +    else
   +            kobject_del(glue_dir);
        mutex_unlock(&gdp_mutex);
    }

  reply	other threads:[~2018-07-03  2:15 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <c40fe912fe008b1b531a3867e8784ed79d68023e.camel@kernel.crashing.org>
     [not found] ` <CA+55aFxR0qg0yY-NWnH0DDruVWw8qRqp8=CRLq13p=TyxosJKw@mail.gmail.com>
2018-06-29  2:21   ` [PATCH 1/2] drivers: core: Don't try to use a dead glue_dir Benjamin Herrenschmidt
2018-06-30 19:45     ` Linus Torvalds
2018-07-07 16:48       ` Greg Kroah-Hartman
2018-07-09 23:44         ` Benjamin Herrenschmidt
2018-07-10 14:55           ` Greg Kroah-Hartman
2018-07-10 23:32             ` Benjamin Herrenschmidt
2018-07-10 23:55               ` Linus Torvalds
2018-07-11  0:07                 ` Benjamin Herrenschmidt
2018-07-21  7:53           ` Greg Kroah-Hartman
2018-07-23  0:35             ` Benjamin Herrenschmidt
2018-07-07 16:51     ` Greg Kroah-Hartman
2018-07-09 23:50       ` Benjamin Herrenschmidt
2018-06-29  2:21   ` [PATCH 2/2] drivers: core: Remove glue dirs from sysfs earlier Benjamin Herrenschmidt
2018-06-29 13:56     ` Linus Torvalds
2018-06-29 13:57       ` Linus Torvalds
2018-06-30  1:04       ` Benjamin Herrenschmidt
2018-06-30  3:51         ` Benjamin Herrenschmidt
     [not found]   ` <edc7b03b9550ddcf1291ebf5a6dafd24f4455c23.camel@kernel.crashing.org>
     [not found]     ` <CA+55aFxS7OVEN5XrxceC5ibz780mhn-qRa50w1gVFjsz2JjMbw@mail.gmail.com>
     [not found]       ` <7eb06b499f2be366cf68c6b6588b16c603e6a567.camel@kernel.crashing.org>
2018-07-01  2:07         ` Linus Torvalds
2018-07-01  2:18           ` Linus Torvalds
2018-07-01  3:49             ` Benjamin Herrenschmidt
2018-07-01  3:42           ` Benjamin Herrenschmidt
2018-07-01  3:57             ` Linus Torvalds
2018-07-01  7:16               ` Benjamin Herrenschmidt
2018-07-01 17:04                 ` Linus Torvalds
2018-07-01 23:36                   ` Benjamin Herrenschmidt
2018-07-02 10:23                     ` Benjamin Herrenschmidt
2018-07-02 19:24                       ` Linus Torvalds
2018-07-03  0:57                         ` Benjamin Herrenschmidt
2018-07-03  2:15                           ` Linus Torvalds [this message]
2018-07-03  2:26                             ` Linus Torvalds
2018-07-03  2:39                               ` Benjamin Herrenschmidt
2018-07-03  5:22                                 ` Benjamin Herrenschmidt
2018-07-03 15:46                                   ` Tejun Heo
2018-07-04  1:10                                     ` Benjamin Herrenschmidt
     [not found]                                   ` <CA+55aFzKmzC-2_6+RsRRu9KfK_r=UGgLN2Q0hSNBV=ScGR7=8g@mail.gmail.com>
     [not found]                                     ` <6e3ca577f8dd5f3621d1054447d3f928a73dfcf9.camel@kernel.crashing.org>
     [not found]                                       ` <CA+55aFy+ZSu5cPzk887N-ZgXqvTB=Bp1JQYMWT1SZY81MqLH6Q@mail.gmail.com>
     [not found]                                         ` <1bc873980e7f63291fbe19dbc7e1607b8e126241.camel@kernel.crashing.org>
     [not found]                                           ` <20180707164241.GB16279@kroah.com>
     [not found]                                             ` <CA+55aFx-UX8nxewRFFWdBgYfPqfipnxaqJuJCUni9h4JvhoPFw@mail.gmail.com>
2018-07-10  0:29                                               ` [PATCH v2 " Benjamin Herrenschmidt
2018-07-10  0:33                                                 ` Linus Torvalds
2018-07-10  1:37                                                   ` Benjamin Herrenschmidt
2018-07-10 14:55                                                 ` Greg Kroah-Hartman
2018-07-10 23:31                                                   ` Benjamin Herrenschmidt
2018-07-03  2:37                             ` [PATCH " Benjamin Herrenschmidt
2018-07-02 10:22                   ` Benjamin Herrenschmidt
2018-07-01  3:52       ` Benjamin Herrenschmidt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA+55aFy927VYjFDwe9Zy_M+XFNxSFh2HLFcQ25pm8AMNXBUoQA@mail.gmail.com \
    --to=torvalds@linux-foundation.org \
    --cc=benh@kernel.crashing.org \
    --cc=ebiederm@xmission.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=joel@jms.id.au \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).