mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-21 18:11:39 +00:00
bcachefs: Fix bch2_mount error path
In the bch2_mount() error path, we were calling deactivate_locked_super(), which calls ->kill_sb(), which in our case was calling bch2_fs_free() without __bch2_fs_stop(). This changes bch2_mount() to just call bch2_fs_stop() directly. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
adc0e95091
commit
7573041ab9
2 changed files with 9 additions and 1 deletions
|
@ -1906,7 +1906,10 @@ static struct dentry *bch2_mount(struct file_system_type *fs_type,
|
|||
return dget(sb->s_root);
|
||||
|
||||
err_put_super:
|
||||
sb->s_fs_info = NULL;
|
||||
c->vfs_sb = NULL;
|
||||
deactivate_locked_super(sb);
|
||||
bch2_fs_stop(c);
|
||||
return ERR_PTR(bch2_err_class(ret));
|
||||
}
|
||||
|
||||
|
@ -1914,8 +1917,11 @@ static void bch2_kill_sb(struct super_block *sb)
|
|||
{
|
||||
struct bch_fs *c = sb->s_fs_info;
|
||||
|
||||
if (c)
|
||||
c->vfs_sb = NULL;
|
||||
generic_shutdown_super(sb);
|
||||
bch2_fs_free(c);
|
||||
if (c)
|
||||
bch2_fs_free(c);
|
||||
}
|
||||
|
||||
static struct file_system_type bcache_fs_type = {
|
||||
|
|
|
@ -581,6 +581,8 @@ void bch2_fs_free(struct bch_fs *c)
|
|||
{
|
||||
unsigned i;
|
||||
|
||||
BUG_ON(!test_bit(BCH_FS_STOPPING, &c->flags));
|
||||
|
||||
mutex_lock(&bch_fs_list_lock);
|
||||
list_del(&c->list);
|
||||
mutex_unlock(&bch_fs_list_lock);
|
||||
|
|
Loading…
Reference in a new issue