On Thu, Sep 07, 2023 at 06:05:40AM -0700, Guenter Roeck wrote: > On Wed, Aug 09, 2023 at 03:05:45PM -0700, Christoph Hellwig wrote: > > As a rule of thumb everything allocated to the fs_context and moved into > > the super_block should be freed by ->kill_sb so that the teardown > > handling doesn't need to be duplicated between the fill_super error > > path and put_super. Implement an ntfs3-specific kill_sb method to do > > that. > > > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > > Reviewed-by: Christian Brauner <brauner@xxxxxxxxxx> > > This patch results in: The appended patch should fix this. Are you able to test it? I will as well.
>From 55d5075cd668eda6a08aaf6569cbc556db8a952b Mon Sep 17 00:00:00 2001 From: Christian Brauner <brauner@xxxxxxxxxx> Date: Thu, 7 Sep 2023 15:52:28 +0200 Subject: [PATCH] ntfs3: put inodes in ntfs3_put_super() Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx> --- fs/ntfs3/super.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/fs/ntfs3/super.c b/fs/ntfs3/super.c index 5fffddea554f..4c73afd935e7 100644 --- a/fs/ntfs3/super.c +++ b/fs/ntfs3/super.c @@ -571,12 +571,8 @@ static void init_once(void *foo) /* * Noinline to reduce binary size. */ -static noinline void ntfs3_free_sbi(struct ntfs_sb_info *sbi) +static noinline void ntfs3_put_sbi(struct ntfs_sb_info *sbi) { - kfree(sbi->new_rec); - kvfree(ntfs_put_shared(sbi->upcase)); - kfree(sbi->def_table); - wnd_close(&sbi->mft.bitmap); wnd_close(&sbi->used.bitmap); @@ -601,6 +597,13 @@ static noinline void ntfs3_free_sbi(struct ntfs_sb_info *sbi) indx_clear(&sbi->security.index_sdh); indx_clear(&sbi->reparse.index_r); indx_clear(&sbi->objid.index_o); +} + +static noinline void ntfs3_free_sbi(struct ntfs_sb_info *sbi) +{ + kfree(sbi->new_rec); + kvfree(ntfs_put_shared(sbi->upcase)); + kfree(sbi->def_table); kfree(sbi->compress.lznt); #ifdef CONFIG_NTFS3_LZX_XPRESS xpress_free_decompressor(sbi->compress.xpress); @@ -625,6 +628,7 @@ static void ntfs_put_super(struct super_block *sb) /* Mark rw ntfs as clear, if possible. */ ntfs_set_state(sbi, NTFS_DIRTY_CLEAR); + ntfs3_put_sbi(sbi); } static int ntfs_statfs(struct dentry *dentry, struct kstatfs *buf) @@ -1644,8 +1648,10 @@ static void ntfs_fs_free(struct fs_context *fc) struct ntfs_mount_options *opts = fc->fs_private; struct ntfs_sb_info *sbi = fc->s_fs_info; - if (sbi) + if (sbi) { + ntfs3_put_sbi(sbi); ntfs3_free_sbi(sbi); + } if (opts) put_mount_options(opts); -- 2.34.1