Loading fs/fat/fat.h +1 −0 Original line number Diff line number Diff line Loading @@ -102,6 +102,7 @@ struct msdos_sb_info { struct hlist_head dir_hashtable[FAT_HASH_SIZE]; unsigned int dirty; /* fs state before mount */ struct rcu_head rcu; }; #define FAT_CACHE_VALID 0 /* special case for valid cache */ Loading fs/fat/inode.c +11 −8 Original line number Diff line number Diff line Loading @@ -548,6 +548,16 @@ static void fat_set_state(struct super_block *sb, brelse(bh); } static void delayed_free(struct rcu_head *p) { struct msdos_sb_info *sbi = container_of(p, struct msdos_sb_info, rcu); unload_nls(sbi->nls_disk); unload_nls(sbi->nls_io); if (sbi->options.iocharset != fat_default_iocharset) kfree(sbi->options.iocharset); kfree(sbi); } static void fat_put_super(struct super_block *sb) { struct msdos_sb_info *sbi = MSDOS_SB(sb); Loading @@ -557,14 +567,7 @@ static void fat_put_super(struct super_block *sb) iput(sbi->fsinfo_inode); iput(sbi->fat_inode); unload_nls(sbi->nls_disk); unload_nls(sbi->nls_io); if (sbi->options.iocharset != fat_default_iocharset) kfree(sbi->options.iocharset); sb->s_fs_info = NULL; kfree(sbi); call_rcu(&sbi->rcu, delayed_free); } static struct kmem_cache *fat_inode_cachep; Loading Loading
fs/fat/fat.h +1 −0 Original line number Diff line number Diff line Loading @@ -102,6 +102,7 @@ struct msdos_sb_info { struct hlist_head dir_hashtable[FAT_HASH_SIZE]; unsigned int dirty; /* fs state before mount */ struct rcu_head rcu; }; #define FAT_CACHE_VALID 0 /* special case for valid cache */ Loading
fs/fat/inode.c +11 −8 Original line number Diff line number Diff line Loading @@ -548,6 +548,16 @@ static void fat_set_state(struct super_block *sb, brelse(bh); } static void delayed_free(struct rcu_head *p) { struct msdos_sb_info *sbi = container_of(p, struct msdos_sb_info, rcu); unload_nls(sbi->nls_disk); unload_nls(sbi->nls_io); if (sbi->options.iocharset != fat_default_iocharset) kfree(sbi->options.iocharset); kfree(sbi); } static void fat_put_super(struct super_block *sb) { struct msdos_sb_info *sbi = MSDOS_SB(sb); Loading @@ -557,14 +567,7 @@ static void fat_put_super(struct super_block *sb) iput(sbi->fsinfo_inode); iput(sbi->fat_inode); unload_nls(sbi->nls_disk); unload_nls(sbi->nls_io); if (sbi->options.iocharset != fat_default_iocharset) kfree(sbi->options.iocharset); sb->s_fs_info = NULL; kfree(sbi); call_rcu(&sbi->rcu, delayed_free); } static struct kmem_cache *fat_inode_cachep; Loading