On 21.09.20 г. 10:29 ч., qiang.zh...@windriver.com wrote: > From: Zqiang <qiang.zh...@windriver.com> > > When the btrfs fill super error, we should first close devices and > then call deactivate_locked_super func to free fs_info. > > Signed-off-by: Zqiang <qiang.zh...@windriver.com> > --- > fs/btrfs/super.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c > index 8840a4fa81eb..3bfd54e8f388 100644 > --- a/fs/btrfs/super.c > +++ b/fs/btrfs/super.c > @@ -1675,6 +1675,7 @@ static struct dentry *btrfs_mount_root(struct > file_system_type *fs_type, > error = security_sb_set_mnt_opts(s, new_sec_opts, 0, NULL); > security_free_mnt_opts(&new_sec_opts); > if (error) { > + btrfs_close_devices(fs_devices); > deactivate_locked_super(s); > return ERR_PTR(error); > } > NAK, Devices are properly closed via: deactivate_locked_super kill_sb (btrfs_kill_super) kill_anon_super generic_shutdown_super put_super (btrfs_put_super) close_ctree It seems you haven't done deep enough analysis of the involved call chains.