diff options
Diffstat (limited to 'fs/minix/inode.c')
| -rw-r--r-- | fs/minix/inode.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/fs/minix/inode.c b/fs/minix/inode.c index 9ea91c5eeb7b..330ff9fc7cf0 100644 --- a/fs/minix/inode.c +++ b/fs/minix/inode.c | |||
| @@ -204,6 +204,8 @@ static int minix_fill_super(struct super_block *s, void *data, int silent) | |||
| 204 | /* | 204 | /* |
| 205 | * Allocate the buffer map to keep the superblock small. | 205 | * Allocate the buffer map to keep the superblock small. |
| 206 | */ | 206 | */ |
| 207 | if (sbi->s_imap_blocks == 0 || sbi->s_zmap_blocks == 0) | ||
| 208 | goto out_illegal_sb; | ||
| 207 | i = (sbi->s_imap_blocks + sbi->s_zmap_blocks) * sizeof(bh); | 209 | i = (sbi->s_imap_blocks + sbi->s_zmap_blocks) * sizeof(bh); |
| 208 | map = kmalloc(i, GFP_KERNEL); | 210 | map = kmalloc(i, GFP_KERNEL); |
| 209 | if (!map) | 211 | if (!map) |
| @@ -263,7 +265,7 @@ out_no_root: | |||
| 263 | 265 | ||
| 264 | out_no_bitmap: | 266 | out_no_bitmap: |
| 265 | printk("MINIX-fs: bad superblock or unable to read bitmaps\n"); | 267 | printk("MINIX-fs: bad superblock or unable to read bitmaps\n"); |
| 266 | out_freemap: | 268 | out_freemap: |
| 267 | for (i = 0; i < sbi->s_imap_blocks; i++) | 269 | for (i = 0; i < sbi->s_imap_blocks; i++) |
| 268 | brelse(sbi->s_imap[i]); | 270 | brelse(sbi->s_imap[i]); |
| 269 | for (i = 0; i < sbi->s_zmap_blocks; i++) | 271 | for (i = 0; i < sbi->s_zmap_blocks; i++) |
| @@ -276,11 +278,16 @@ out_no_map: | |||
| 276 | printk("MINIX-fs: can't allocate map\n"); | 278 | printk("MINIX-fs: can't allocate map\n"); |
| 277 | goto out_release; | 279 | goto out_release; |
| 278 | 280 | ||
| 281 | out_illegal_sb: | ||
| 282 | if (!silent) | ||
| 283 | printk("MINIX-fs: bad superblock\n"); | ||
| 284 | goto out_release; | ||
| 285 | |||
| 279 | out_no_fs: | 286 | out_no_fs: |
| 280 | if (!silent) | 287 | if (!silent) |
| 281 | printk("VFS: Can't find a Minix or Minix V2 filesystem " | 288 | printk("VFS: Can't find a Minix or Minix V2 filesystem " |
| 282 | "on device %s\n", s->s_id); | 289 | "on device %s\n", s->s_id); |
| 283 | out_release: | 290 | out_release: |
| 284 | brelse(bh); | 291 | brelse(bh); |
| 285 | goto out; | 292 | goto out; |
| 286 | 293 | ||
| @@ -290,7 +297,7 @@ out_bad_hblock: | |||
| 290 | 297 | ||
| 291 | out_bad_sb: | 298 | out_bad_sb: |
| 292 | printk("MINIX-fs: unable to read superblock\n"); | 299 | printk("MINIX-fs: unable to read superblock\n"); |
| 293 | out: | 300 | out: |
| 294 | s->s_fs_info = NULL; | 301 | s->s_fs_info = NULL; |
| 295 | kfree(sbi); | 302 | kfree(sbi); |
| 296 | return -EINVAL; | 303 | return -EINVAL; |
