From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Ming Lei <ming.lei@redhat.com>
Cc: Petr Mladek <pmladek@suse.com>,
linux-kernel@vger.kernel.org,
Luis Chamberlain <mcgrof@kernel.org>
Subject: Re: [PATCH V2 2/2] kobject: wait until kobject is cleaned up before freeing module
Date: Fri, 3 Dec 2021 16:07:39 +0100 [thread overview]
Message-ID: <YaoyuzPutBjLuVNt@kroah.com> (raw)
In-Reply-To: <20211129034509.2646872-3-ming.lei@redhat.com>
On Mon, Nov 29, 2021 at 11:45:09AM +0800, Ming Lei wrote:
> kobject_put() may become asynchronously because of
> CONFIG_DEBUG_KOBJECT_RELEASE, so once kobject_put() returns, the caller may
> expect the kobject is released after the last refcnt is dropped, however
> CONFIG_DEBUG_KOBJECT_RELEASE just schedules one delayed work function
> for cleaning up the kobject.
The caller should NOT expect the kobject to be released. That's the
whole point of dynamic reference counted objects, you never "know" when
the last object is released. This option just makes it obvious so that
you know when to fix up code that has this assumption.
> Inside the cleanup handler, kobj->ktype and kobj->ktype->release are
> required.
Yes. Is that a problem?
> It is supposed that no activity is on kobject itself any more since
> module_exit() is started, so it is reasonable for the kobject user or
> driver to expect that kobject can be really released in the last run of
> kobject_put() in module_exit() code path. Otherwise, it can be thought as
> one driver's bug since the module is going away.
Why is module_exit() somehow special here? What is so odd about that?
> When the ->ktype and ->ktype->release are allocated as module static
> variable, it can cause trouble because the delayed cleanup handler may
> be run after the module is unloaded.
Why is ktype and release part of module code?
What module kobject is causing this problem?
> Fixes the issue by flushing scheduled kobject cleanup work before
> freeing module.
Why are modules special here?
And if you enable this option, and then start unloading kernel modules,
yes, things can go wrong, but that's not what this kernel option is for
at all.
This feels like a hack for not a real problem.
thanks,
greg k-h
next prev parent reply other threads:[~2021-12-03 15:07 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-29 3:45 [PATCH V2 0/2] kobject: avoid to cleanup kobject after module is unloaded Ming Lei
2021-11-29 3:45 ` [PATCH V2 1/2] kobject: don't delay to cleanup module kobject Ming Lei
2021-12-03 15:08 ` Greg Kroah-Hartman
2021-12-07 13:58 ` kernel test robot
2021-11-29 3:45 ` [PATCH V2 2/2] kobject: wait until kobject is cleaned up before freeing module Ming Lei
2021-12-03 15:07 ` Greg Kroah-Hartman [this message]
2021-12-06 2:13 ` Ming Lei
2021-12-06 8:04 ` Greg Kroah-Hartman
2021-12-07 1:50 ` Ming Lei
2021-12-07 10:32 ` Petr Mladek
2021-12-07 12:51 ` Ming Lei
2021-12-07 14:02 ` Petr Mladek
2022-07-07 4:54 ` Ming Lei
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=YaoyuzPutBjLuVNt@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=ming.lei@redhat.com \
--cc=pmladek@suse.com \
/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