diff mbox series

[B,1/2] kernfs: deal with kernfs_fill_super() failures

Message ID 20210630190001.6112-2-gpiccoli@canonical.com
State New
Headers show
Series Kernel oops due to uninitialized list on kernfs | expand

Commit Message

Guilherme G. Piccoli June 30, 2021, 7 p.m. UTC
From: Al Viro <viro@zeniv.linux.org.uk>

BugLink: https://bugs.launchpad.net/bugs/1934175

make sure that info->node is initialized early, so that kernfs_kill_sb()
can list_del() it safely.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
(cherry picked from commit 82382acec0c97b91830fff7130d0acce4ac4f3f3)
Signed-off-by: Guilherme G. Piccoli <gpiccoli@canonical.com>
---
 fs/kernfs/mount.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Thadeu Lima de Souza Cascardo June 30, 2021, 7:53 p.m. UTC | #1
On Wed, Jun 30, 2021 at 04:00:00PM -0300, Guilherme G. Piccoli wrote:
> From: Al Viro <viro@zeniv.linux.org.uk>
> 
> BugLink: https://bugs.launchpad.net/bugs/1934175
> 
> make sure that info->node is initialized early, so that kernfs_kill_sb()
> can list_del() it safely.
> 
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
> (cherry picked from commit 82382acec0c97b91830fff7130d0acce4ac4f3f3)
> Signed-off-by: Guilherme G. Piccoli <gpiccoli@canonical.com>
> ---
>  fs/kernfs/mount.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/fs/kernfs/mount.c b/fs/kernfs/mount.c
> index 23ddba589552..0b22c39dad47 100644
> --- a/fs/kernfs/mount.c
> +++ b/fs/kernfs/mount.c
> @@ -320,6 +320,7 @@ struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags,
>  
>  	info->root = root;
>  	info->ns = ns;
> +	INIT_LIST_HEAD(&info->node);
>  
>  	sb = sget_userns(fs_type, kernfs_test_super, kernfs_set_super, flags,
>  			 &init_user_ns, info);
> -- 
> 2.31.1
> 

Acked-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
diff mbox series

Patch

diff --git a/fs/kernfs/mount.c b/fs/kernfs/mount.c
index 23ddba589552..0b22c39dad47 100644
--- a/fs/kernfs/mount.c
+++ b/fs/kernfs/mount.c
@@ -320,6 +320,7 @@  struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags,
 
 	info->root = root;
 	info->ns = ns;
+	INIT_LIST_HEAD(&info->node);
 
 	sb = sget_userns(fs_type, kernfs_test_super, kernfs_set_super, flags,
 			 &init_user_ns, info);