Skip to contentSkip to conversation

proc: register filesystem last

PATCH In review Alexey Dobriyan 3 participants 7 messages Mar 9, 2018 – Mar 28, 2018 Proc filesystem

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 proc: register filesystem last

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.

---

 fs/proc/root.c |    8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)
fs/proc/root.c +2 -6
@@ -123,14 +123,8 @@ static struct file_system_type proc_fs_type = {
 
 void __init proc_root_init(void)
 {
-	int err;
-
 	proc_init_kmemcache();
 	set_proc_pid_nlink();
-	err = register_filesystem(&proc_fs_type);
-	if (err)
-		return;
-
 	proc_self_init();
 	proc_thread_self_init();
 	proc_symlink("mounts", NULL, "self/mounts");
@@ -146,6 +140,8 @@ void __init proc_root_init(void)
 	proc_tty_init();
 	proc_mkdir("bus", NULL);
 	proc_sys_init();
+
+	register_filesystem(&proc_fs_type);
 }
 
 static int proc_root_getattr(const struct path *path, struct kstat *stat,
#1 lore raw
Quoted 7 lines · On Sat, 10 Mar 2018 01:27:09 +0300 Alexey Dobriyan <[email protected]> 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()?

#2 lore raw
Quoted 11 lines · Andrew Morton
Quoted 7 lines · On Sat, 10 Mar 2018 01:27:09 +0300 Alexey Dobriyan <[email protected]> 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.

#3 lore raw
Quoted 9 lines · Alexey Dobriyan
Quoted 8 lines · Andrew Morton
Quoted 6 lines · On Sat, 10 Mar 2018 01:27:09 +0300 Alexey Dobriyan <[email protected]> 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.

Quoted 7 lines
Quoted 3 lines
Quoted 1 line

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?

#4 lore raw
Quoted 18 lines · Al Viro
Quoted 9 lines · Alexey Dobriyan
Quoted 8 lines · Andrew Morton
Quoted 6 lines · On Sat, 10 Mar 2018 01:27:09 +0300 Alexey Dobriyan <[email protected]> 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.

Quoted 7 lines
Quoted 3 lines
Quoted 1 line

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.

Quoted 5 lines

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.

#5 lore raw
Quoted 19 lines · Alexey Dobriyan
Quoted 18 lines · Al Viro
Quoted 16 lines · Alexey Dobriyan
Quoted 11 lines · Andrew Morton
Quoted 7 lines · On Sat, 10 Mar 2018 01:27:09 +0300 Alexey Dobriyan <[email protected]> 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.

Quoted 8 lines
Quoted 5 lines

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.

#6 lore raw
Quoted 29 lines · Al Viro
Quoted 19 lines · Alexey Dobriyan
Quoted 18 lines · Al Viro
Quoted 16 lines · Alexey Dobriyan
Quoted 11 lines · Andrew Morton
Quoted 7 lines · On Sat, 10 Mar 2018 01:27:09 +0300 Alexey Dobriyan <[email protected]> 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.

Quoted 8 lines
Quoted 5 lines

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.

Quoted 8 lines

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.