Skip to content

Commit

Permalink
exfat: don't RCU-free the sbi
Browse files Browse the repository at this point in the history
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>
Christoph Hellwig authored and Christian Brauner committed Aug 10, 2023
1 parent 1489dff commit c934dc9
Showing 2 changed files with 4 additions and 13 deletions.
2 changes: 0 additions & 2 deletions fs/exfat/exfat_fs.h
Original file line number Diff line number Diff line change
@@ -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
15 changes: 4 additions & 11 deletions fs/exfat/super.c
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit c934dc9

Please sign in to comment.