exfat: don't RCU-free the sbi
authorChristoph Hellwig <hch@lst.de>
Wed, 9 Aug 2023 22:05:41 +0000 (15:05 -0700)
committerChristian Brauner <brauner@kernel.org>
Thu, 10 Aug 2023 08:34:55 +0000 (10:34 +0200)
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>
fs/exfat/exfat_fs.h
fs/exfat/super.c

index 729ada9..f55498e 100644 (file)
@@ -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
index 8c32460..3c6aec9 100644 (file)
@@ -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)