|
@@ -132,6 +132,7 @@ static void ext2_put_super (struct super_block * sb)
|
|
percpu_counter_destroy(&sbi->s_dirs_counter);
|
|
percpu_counter_destroy(&sbi->s_dirs_counter);
|
|
brelse (sbi->s_sbh);
|
|
brelse (sbi->s_sbh);
|
|
sb->s_fs_info = NULL;
|
|
sb->s_fs_info = NULL;
|
|
|
|
+ kfree(sbi->s_blockgroup_lock);
|
|
kfree(sbi);
|
|
kfree(sbi);
|
|
|
|
|
|
return;
|
|
return;
|
|
@@ -756,6 +757,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
|
|
sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
|
|
sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
|
|
if (!sbi)
|
|
if (!sbi)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
+
|
|
|
|
+ sbi->s_blockgroup_lock =
|
|
|
|
+ kzalloc(sizeof(struct blockgroup_lock), GFP_KERNEL);
|
|
|
|
+ if (!sbi->s_blockgroup_lock) {
|
|
|
|
+ kfree(sbi);
|
|
|
|
+ return -ENOMEM;
|
|
|
|
+ }
|
|
sb->s_fs_info = sbi;
|
|
sb->s_fs_info = sbi;
|
|
sbi->s_sb_block = sb_block;
|
|
sbi->s_sb_block = sb_block;
|
|
|
|
|
|
@@ -983,7 +991,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
|
|
printk ("EXT2-fs: not enough memory\n");
|
|
printk ("EXT2-fs: not enough memory\n");
|
|
goto failed_mount;
|
|
goto failed_mount;
|
|
}
|
|
}
|
|
- bgl_lock_init(&sbi->s_blockgroup_lock);
|
|
|
|
|
|
+ bgl_lock_init(sbi->s_blockgroup_lock);
|
|
sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL);
|
|
sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL);
|
|
if (!sbi->s_debts) {
|
|
if (!sbi->s_debts) {
|
|
printk ("EXT2-fs: not enough memory\n");
|
|
printk ("EXT2-fs: not enough memory\n");
|