Re: [PATCH] proc: register filesystem last

From: Alexey Dobriyan
Date: Wed Mar 28 2018 - 18:38:43 EST


On Wed, Mar 28, 2018 at 03:47:49PM +0100, Al Viro wrote:
> On Wed, Mar 28, 2018 at 10:26:57AM +0300, Alexey Dobriyan wrote:
> > On Wed, Mar 28, 2018 at 05:48:23AM +0100, Al Viro wrote:
> > > On Sat, Mar 10, 2018 at 03:06:34AM +0300, Alexey Dobriyan wrote:
> > > > On Fri, Mar 09, 2018 at 02:49:38PM -0800, Andrew Morton wrote:
> > > > > On Sat, 10 Mar 2018 01:27:09 +0300 Alexey Dobriyan <adobriyan@xxxxxxxxx> wrote:
> > > > >
> > > > > > As soon as register_filesystem() exits, filesystem can be mounted.
> > > > > > It is better to present fully operational /proc.
> > > > > >
> > > > > > Of course it doesn't matter because /proc is not modular
> > > > > > but do it anyway.
> > > > > >
> > > > > > Drop error check, it should be handled by panicking.
> > > > >
> > > > > So... shouldn't we add a call to panic()?
> > > >
> > > > via FS_PANIC flag, yes. I have a patch somewhere.
> > > > There are 104 filesystems ATM, some internal, some not.
> > > > Some modular, some not.
> > >
> > > You do realize that the only case when register_filesystem() fails is
> > > "another driver has already registered filesystem type with the same
> > > name"? Is there *ever* a case when
> > > * you could expect that to happen and
> > > * panic would be a sane response?
> >
> > It is for standartizing all those error checks in init sequence by
> > removing them. Modules won't have FS_PANIC.
>
> Huh? Again, _when_ is that thing appropriate? To register_filesystem()
> failure in non-modular case you need several builtin fs drivers to
> try and register fs types with the same name. In this particular
> case, you need another in-kernel filesystem called "proc" registered
> first.
>
> It's not about extreme oom early in the boot or anything like that -
> plain and simple badly modified and misconfigured kernel.

At this point I'm not sure if we agree or disagree.

If register fails at init time it can mean that strncmp() is buggy,
or memory corruption already happened (file_system_type instances aren't
const after all). In all cases it is appropriate to panic exactly
because "regular" name collision will never happen.