linux-modules.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Petr Mladek <pmladek@suse.com>
To: Luis Chamberlain <mcgrof@kernel.org>
Cc: Aaron Tomlin <atomlin@redhat.com>,
	Christoph Lameter <cl@linux.com>, Miroslav Benes <mbenes@suse.cz>,
	Andrew Morton <akpm@linux-foundation.org>,
	jeyu@kernel.org, linux-kernel@vger.kernel.org,
	linux-modules@vger.kernel.org, atomlin@atomlin.com
Subject: Re: [RFC PATCH] module: Introduce module unload taint tracking
Date: Fri, 10 Dec 2021 11:00:52 +0100	[thread overview]
Message-ID: <YbMlVFwBiRujKdEX@alley> (raw)
In-Reply-To: <YbKUUJUtjBk/n913@bombadil.infradead.org>

On Thu 2021-12-09 15:42:08, Luis Chamberlain wrote:
> On Thu, Dec 09, 2021 at 04:49:17PM +0000, Aaron Tomlin wrote:
> > On Wed 2021-12-08 12:47 -0800, Luis Chamberlain wrote:
> > > Loading and unloading modules... to keep track of *which ones are
> > > tainted*. I'd find it extremely hard to believe this is such a common
> > > thing and hot path that we need this.
> > > 
> > > In any case, since a linked list is used, I'm curious why did you
> > > decide to bound this to an arbitrary limit of say 20? If this
> > > feature is enabled why not make this boundless?
> > 
> > It can be, once set to 0. Indeed, the limit specified above is arbitrary.
> > Personally, I prefer to have some limit that can be controlled by the user.
> > In fact, if agreed, I can incorporate the limit [when specified] into the
> > output generated via print_modules().
> 
> If someone enables this feature I can't think of a reason why they
> would want to limit this to some arbitrary number. So my preference
> is to remove that limitation completely. I see no point to it.

I agree with Luis here. We could always add the limit later when
people report some real life problems with too long list. It is
always good to know that someone did some heavy lifting in
the system.

It might be even interesting to remember timestamp of the removal
to match it with another events reported in the system log.

> > > > @@ -3703,6 +3778,16 @@ static noinline int do_init_module(struct module *mod)
> > > >  	mod->state = MODULE_STATE_LIVE;
> > > >  	blocking_notifier_call_chain(&module_notify_list,
> > > >  				     MODULE_STATE_LIVE, mod);
> > > > +#ifdef CONFIG_MODULE_UNLOAD_TAINT_TRACKING
> > > > +	mutex_lock(&module_mutex);
> > > > +	old = find_mod_unload_taint(mod->name, strlen(mod->name),
> > > > +				mod->taints);
> > > > +	if (old) {
> > > > +		list_del_rcu(&old->list);
> > > > +		synchronize_rcu();
> > > > +	}
> > > > +	mutex_unlock(&module_mutex);
> > > 
> > > But here we seem to delete an old instance of the module taint
> > > history if it is loaded again and has the same taint properties.
> > > Why?
> > 
> > At first glance, in this particular case, I believe this makes sense to
> > avoid duplication
> 
> If you just bump the count then its not duplication, it just adds
> more information that the same module name with the same taint flag
> has been unloaded now more than once.

Please, do not remove records that a module was removed. IMHO, it
might be useful to track all removed module, including the non-tainted
ones. Module removal is always tricky and not much tested. The tain
flags might be just shown as extra information in the output.

Best Regards,
Petr

  reply	other threads:[~2021-12-10 10:00 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-24 17:33 [RFC PATCH] module: Introduce module unload taint tracking Aaron Tomlin
2021-12-08 20:47 ` Luis Chamberlain
2021-12-09 16:49   ` Aaron Tomlin
2021-12-09 23:42     ` Luis Chamberlain
2021-12-10 10:00       ` Petr Mladek [this message]
2021-12-10 16:09         ` Aaron Tomlin
2021-12-10 17:09           ` Luis Chamberlain
2021-12-13 15:16           ` Petr Mladek
2021-12-21 11:58             ` Aaron Tomlin
2021-12-10 17:03         ` Luis Chamberlain
2021-12-10 15:48       ` Aaron Tomlin
2021-12-28 21:30       ` [RFC PATCH 00/12] module: core code clean up Aaron Tomlin
2021-12-28 21:30         ` [RFC PATCH 01/12] module: Move all into module/ Aaron Tomlin
2021-12-28 21:30         ` [RFC PATCH 02/12] module: Simple refactor in preparation for split Aaron Tomlin
2021-12-28 21:30         ` [RFC PATCH 03/12] module: Move livepatch support to a separate file Aaron Tomlin
2021-12-28 21:30         ` [RFC PATCH 04/12] module: Move latched RB-tree " Aaron Tomlin
2021-12-28 21:30         ` [RFC PATCH 05/12] module: Move arch strict rwx " Aaron Tomlin
2022-01-12 16:13           ` Luis Chamberlain
2021-12-28 21:30         ` [RFC PATCH 06/12] module: Move " Aaron Tomlin
2021-12-28 21:30         ` [RFC PATCH 07/12] module: Move extra signature support out of core code Aaron Tomlin
2021-12-28 21:30         ` [RFC PATCH 08/12] module: Move kmemleak support to a separate file Aaron Tomlin
2021-12-28 21:30         ` [RFC PATCH 09/12] module: Move kallsyms support into " Aaron Tomlin
2021-12-28 21:30         ` [RFC PATCH 10/12] module: Move procfs " Aaron Tomlin
2021-12-28 21:30         ` [RFC PATCH 11/12] module: Move sysfs " Aaron Tomlin
2022-01-12 16:20           ` Luis Chamberlain
2021-12-28 21:30         ` [RFC PATCH 12/12] module: Move kdb_modules list out of core code Aaron Tomlin
2021-12-29  8:58         ` [RFC PATCH 00/12] module: core code clean up Aaron Tomlin
2022-01-12 16:21         ` Luis Chamberlain
2021-12-13 13:00     ` [RFC PATCH] module: Introduce module unload taint tracking Allen
2021-12-20 19:23       ` Luis Chamberlain
2021-12-21 11:44       ` Aaron Tomlin

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=YbMlVFwBiRujKdEX@alley \
    --to=pmladek@suse.com \
    --cc=akpm@linux-foundation.org \
    --cc=atomlin@atomlin.com \
    --cc=atomlin@redhat.com \
    --cc=cl@linux.com \
    --cc=jeyu@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-modules@vger.kernel.org \
    --cc=mbenes@suse.cz \
    --cc=mcgrof@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).