Re: [patch 128/147] init: move usermodehelper_enable() to populate_rootfs()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 10, 2021 at 10:12:01AM +0200, Rasmus Villemoes wrote:
> On 08/09/2021 17.44, Luis Chamberlain wrote:
> > On Tue, Sep 07, 2021 at 08:00:03PM -0700, Andrew Morton wrote:
> >> From: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx>
> >> Any call of wait_for_initramfs() done before the unpacking has been
> >> scheduled (i.e. before rootfs_initcall time) must just return
> >> immediately [and let the caller find an empty file system] in order
> >> not to deadlock the machine. I mistakenly thought, and my limited
> >> testing confirmed, that there were no such calls, so I added a
> >> pr_warn_once() in wait_for_initramfs(). It turns out that one can
> >> indeed hit request_module() as well as kobject_uevent_env() during
> >> those early init calls, leading to a user-visible warning in the
> >> kernel log emitted consistently for certain configurations.
> > 
> > Further proof that the semantics for init is still loose. Formalizing
> > dependencies on init is something we should strive to. Eventualy with a
> > DAG.  The linker-tables work I had done years ago strived to get us
> > there which allows us to get a simple explicit DAG through the linker.
> > Unfortunately that patch set fell through because folks were
> > more interested in questioning the alternative side benefits of
> > linker-tables, but the use-case for helping with init is still valid.
> > 
> > If we *do* want to resurrect this folks should let me know.
> 
> Heh, a while back I actually had some completely unrelated thing where
> I'd want to make use of the linker tables infrastructure - I remembered
> reading about it on LWN, and was quite surprised when I learnt that that
> work had never made it in. I don't quite remember the use case (I think
> it was for some test module infrastructure). But if you do have time to
> resurrect those patches, I'd certainly be interested.

OK I might.

> > Since the kobject_uevent_env() interest here is for /sbin/hotplug and
> > that crap is deprecated, in practice the relevant calls we'd care about
> > are the request_module() calls.
> 
> Yes - the first report I got about that pr_warn_once was indeed fixed by
> the reporter simply disabling CONFIG_UEVENT_HELPER
> (https://lore.kernel.org/lkml/9849be80-cfe5-b33e-8224-590a4c451415@xxxxxxxxx/).

Ah I see.

> >> We could just remove the pr_warn_once(), but I think it's better to
> >> postpone enabling the usermodehelper framework until there is at least
> >> some chance of finding the executable. That is also a little more
> >> efficient in that a lot of work done in umh.c will be elided.
> > 
> > I *don't* think we were aware that such request_module() calls were
> > happening before the fs was even ready and failing silently with
> > -ENOENT. 
> 
> Probably not, no, otherwise somebody would have noticed.

OK your commit log was not clear on this, it seemed to suggest this
as a possibility or that such a case existed. That also means the
impact of your change is less.

> >> However,
> >> it does change the error seen by those early callers from -ENOENT to
> >> -EBUSY, so there is a risk of a regression if any caller care about
> >> the exact error value.
> > 
> > I'd see this as a welcomed evolution as it tells us more: we're saying
> > "it's coming, try again" or whatever.
> 
> Indeed, and I don't think it's the end of the world if somebody notices
> some change due to that, because we'd learn more about where those early
> request_module() calls come from.

But since it would seem none have been reported yet, it is an even
better situation.

> > A debug option to allow us to get a full warning trace in the -EBUSY
> > case on early init would be nice to have.
> 
> As noted above, that's difficult. We'd need a way to know which other
> task is waiting for us, then print the trace of that guy.
> 
> I don't think anybody is gonna hear this tree falling, so let's not try
> to solve a problem before we know there is one.

That's fair. But let's also recall neither of us expected the above
situation either. But I agree the possible collateral at this point
seems to be small, if any.

 Luis




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux