|
@@ -2325,7 +2325,10 @@ static int shmem_show_options(struct seq_file *seq, struct vfsmount *vfs)
|
|
|
|
|
|
static void shmem_put_super(struct super_block *sb)
|
|
|
{
|
|
|
- kfree(sb->s_fs_info);
|
|
|
+ struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
|
|
|
+
|
|
|
+ percpu_counter_destroy(&sbinfo->used_blocks);
|
|
|
+ kfree(sbinfo);
|
|
|
sb->s_fs_info = NULL;
|
|
|
}
|
|
|
|
|
@@ -2367,7 +2370,8 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
|
|
|
#endif
|
|
|
|
|
|
spin_lock_init(&sbinfo->stat_lock);
|
|
|
- percpu_counter_init(&sbinfo->used_blocks, 0);
|
|
|
+ if (percpu_counter_init(&sbinfo->used_blocks, 0))
|
|
|
+ goto failed;
|
|
|
sbinfo->free_inodes = sbinfo->max_inodes;
|
|
|
|
|
|
sb->s_maxbytes = SHMEM_MAX_BYTES;
|