aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext2
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext2')
-rw-r--r--fs/ext2/super.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 639a32c3c9c1..2690e460f2ef 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -653,6 +653,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
653 int db_count; 653 int db_count;
654 int i, j; 654 int i, j;
655 __le32 features; 655 __le32 features;
656 int err;
656 657
657 sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); 658 sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
658 if (!sbi) 659 if (!sbi)
@@ -906,12 +907,20 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
906 get_random_bytes(&sbi->s_next_generation, sizeof(u32)); 907 get_random_bytes(&sbi->s_next_generation, sizeof(u32));
907 spin_lock_init(&sbi->s_next_gen_lock); 908 spin_lock_init(&sbi->s_next_gen_lock);
908 909
909 percpu_counter_init(&sbi->s_freeblocks_counter, 910 err = percpu_counter_init(&sbi->s_freeblocks_counter,
910 ext2_count_free_blocks(sb)); 911 ext2_count_free_blocks(sb));
911 percpu_counter_init(&sbi->s_freeinodes_counter, 912 if (!err) {
913 err = percpu_counter_init(&sbi->s_freeinodes_counter,
912 ext2_count_free_inodes(sb)); 914 ext2_count_free_inodes(sb));
913 percpu_counter_init(&sbi->s_dirs_counter, 915 }
916 if (!err) {
917 err = percpu_counter_init(&sbi->s_dirs_counter,
914 ext2_count_dirs(sb)); 918 ext2_count_dirs(sb));
919 }
920 if (err) {
921 printk(KERN_ERR "EXT2-fs: insufficient memory\n");
922 goto failed_mount3;
923 }
915 /* 924 /*
916 * set up enough so that it can read an inode 925 * set up enough so that it can read an inode
917 */ 926 */