diff options
Diffstat (limited to 'fs/hfsplus/super.c')
-rw-r--r-- | fs/hfsplus/super.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index 84a47b709f51..acaef57e3606 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c | |||
@@ -393,6 +393,13 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent) | |||
393 | if (!sbi->rsrc_clump_blocks) | 393 | if (!sbi->rsrc_clump_blocks) |
394 | sbi->rsrc_clump_blocks = 1; | 394 | sbi->rsrc_clump_blocks = 1; |
395 | 395 | ||
396 | err = generic_check_addressable(sbi->alloc_blksz_shift, | ||
397 | sbi->total_blocks); | ||
398 | if (err) { | ||
399 | printk(KERN_ERR "hfs: filesystem size too large.\n"); | ||
400 | goto out_free_vhdr; | ||
401 | } | ||
402 | |||
396 | /* Set up operations so we can load metadata */ | 403 | /* Set up operations so we can load metadata */ |
397 | sb->s_op = &hfsplus_sops; | 404 | sb->s_op = &hfsplus_sops; |
398 | sb->s_maxbytes = MAX_LFS_FILESIZE; | 405 | sb->s_maxbytes = MAX_LFS_FILESIZE; |
@@ -417,6 +424,8 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent) | |||
417 | sb->s_flags |= MS_RDONLY; | 424 | sb->s_flags |= MS_RDONLY; |
418 | } | 425 | } |
419 | 426 | ||
427 | err = -EINVAL; | ||
428 | |||
420 | /* Load metadata objects (B*Trees) */ | 429 | /* Load metadata objects (B*Trees) */ |
421 | sbi->ext_tree = hfs_btree_open(sb, HFSPLUS_EXT_CNID); | 430 | sbi->ext_tree = hfs_btree_open(sb, HFSPLUS_EXT_CNID); |
422 | if (!sbi->ext_tree) { | 431 | if (!sbi->ext_tree) { |