summaryrefslogtreecommitdiffstats
path: root/fs/exfat
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2023-08-09 15:05:41 -0700
committerChristian Brauner <brauner@kernel.org>2023-08-10 10:34:55 +0200
commitc934dc927e8efa9e0dc3cba8787912d6c23d272f (patch)
tree09412d140b7bd1c969a59587aa16f0c5ed0d2fd6 /fs/exfat
parent1489dffd51d7e4519855723b00516719d5aa3a6a (diff)
downloadlinux-stable-c934dc927e8efa9e0dc3cba8787912d6c23d272f.tar.gz
linux-stable-c934dc927e8efa9e0dc3cba8787912d6c23d272f.tar.bz2
linux-stable-c934dc927e8efa9e0dc3cba8787912d6c23d272f.zip
exfat: don't RCU-free the sbi
There are no RCU critical sections for accessing any information in the sbi, so drop the call_rcu indirection for freeing the sbi. Signed-off-by: Christoph Hellwig <hch@lst.de> Message-Id: <20230809220545.1308228-10-hch@lst.de> Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'fs/exfat')
-rw-r--r--fs/exfat/exfat_fs.h2
-rw-r--r--fs/exfat/super.c15
2 files changed, 4 insertions, 13 deletions
diff --git a/fs/exfat/exfat_fs.h b/fs/exfat/exfat_fs.h
index 729ada9e26e8..f55498e5c23d 100644
--- a/fs/exfat/exfat_fs.h
+++ b/fs/exfat/exfat_fs.h
@@ -273,8 +273,6 @@ struct exfat_sb_info {
spinlock_t inode_hash_lock;
struct hlist_head inode_hashtable[EXFAT_HASH_SIZE];
-
- struct rcu_head rcu;
};
#define EXFAT_CACHE_VALID 0
diff --git a/fs/exfat/super.c b/fs/exfat/super.c
index 8c32460e031e..3c6aec96d0dc 100644
--- a/fs/exfat/super.c
+++ b/fs/exfat/super.c
@@ -31,16 +31,6 @@ static void exfat_free_iocharset(struct exfat_sb_info *sbi)
kfree(sbi->options.iocharset);
}
-static void exfat_delayed_free(struct rcu_head *p)
-{
- struct exfat_sb_info *sbi = container_of(p, struct exfat_sb_info, rcu);
-
- unload_nls(sbi->nls_io);
- exfat_free_iocharset(sbi);
- exfat_free_upcase_table(sbi);
- kfree(sbi);
-}
-
static void exfat_put_super(struct super_block *sb)
{
struct exfat_sb_info *sbi = EXFAT_SB(sb);
@@ -50,7 +40,10 @@ static void exfat_put_super(struct super_block *sb)
brelse(sbi->boot_bh);
mutex_unlock(&sbi->s_lock);
- call_rcu(&sbi->rcu, exfat_delayed_free);
+ unload_nls(sbi->nls_io);
+ exfat_free_iocharset(sbi);
+ exfat_free_upcase_table(sbi);
+ kfree(sbi);
}
static int exfat_sync_fs(struct super_block *sb, int wait)