Message ID | 20180907122534.ojogke2alt3ldbom@kili.mountain (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vfs: namespace: error pointer dereference in do_remount() | expand |
This patch also fixes the syzbot bug (BUG: unable to handle kernel paging request in do_mount) (https://syzkaller.appspot.com/bug?id=611b50e30eb1634e75688903289148fe2a042c1d) Short description of the syzbot reproducer: * do_mount() is called with remount flag * vfs_new_fs_context() is called and tries to allocate a new context * slab allocation fails due to injected fault * an invalid context is passed to parse_monolithic_mount_data() * kernel crash due to invalid pointer access On 07.09.2018 15:25, Dan Carpenter wrote: > We need to check if vfs_new_fs_context() returns an error pointer. > > Fixes: fd0002870b45 ("vfs: Implement a filesystem superblock creation/configuration context") > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> > > diff --git a/fs/namespace.c b/fs/namespace.c > index a240e20093e0..841517520c08 100644 > --- a/fs/namespace.c > +++ b/fs/namespace.c > @@ -2384,6 +2384,8 @@ static int do_remount(struct path *path, int ms_flags, int sb_flags, > fc = vfs_new_fs_context(path->dentry->d_sb->s_type, > path->dentry, sb_flags, MS_RMT_MASK, > FS_CONTEXT_FOR_RECONFIGURE); > + if (IS_ERR(fc)) > + return PTR_ERR(fc); > > err = parse_monolithic_mount_data(fc, data, data_size); > if (err < 0) >
diff --git a/fs/namespace.c b/fs/namespace.c index a240e20093e0..841517520c08 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2384,6 +2384,8 @@ static int do_remount(struct path *path, int ms_flags, int sb_flags, fc = vfs_new_fs_context(path->dentry->d_sb->s_type, path->dentry, sb_flags, MS_RMT_MASK, FS_CONTEXT_FOR_RECONFIGURE); + if (IS_ERR(fc)) + return PTR_ERR(fc); err = parse_monolithic_mount_data(fc, data, data_size); if (err < 0)
We need to check if vfs_new_fs_context() returns an error pointer. Fixes: fd0002870b45 ("vfs: Implement a filesystem superblock creation/configuration context") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>