.. | .. |
---|
91 | 91 | |
---|
92 | 92 | if (buffer_verified(bh)) |
---|
93 | 93 | return 0; |
---|
94 | | - if (EXT4_MB_GRP_IBITMAP_CORRUPT(grp)) |
---|
| 94 | + if (!grp || EXT4_MB_GRP_IBITMAP_CORRUPT(grp)) |
---|
95 | 95 | return -EFSCORRUPTED; |
---|
96 | 96 | |
---|
97 | 97 | ext4_lock_group(sb, block_group); |
---|
.. | .. |
---|
293 | 293 | } |
---|
294 | 294 | if (!(sbi->s_mount_state & EXT4_FC_REPLAY)) { |
---|
295 | 295 | grp = ext4_get_group_info(sb, block_group); |
---|
296 | | - if (unlikely(EXT4_MB_GRP_IBITMAP_CORRUPT(grp))) { |
---|
| 296 | + if (!grp || unlikely(EXT4_MB_GRP_IBITMAP_CORRUPT(grp))) { |
---|
297 | 297 | fatal = -EFSCORRUPTED; |
---|
298 | 298 | goto error_return; |
---|
299 | 299 | } |
---|
.. | .. |
---|
1048 | 1048 | * Skip groups with already-known suspicious inode |
---|
1049 | 1049 | * tables |
---|
1050 | 1050 | */ |
---|
1051 | | - if (EXT4_MB_GRP_IBITMAP_CORRUPT(grp)) |
---|
| 1051 | + if (!grp || EXT4_MB_GRP_IBITMAP_CORRUPT(grp)) |
---|
1052 | 1052 | goto next_group; |
---|
1053 | 1053 | } |
---|
1054 | 1054 | |
---|
.. | .. |
---|
1183 | 1183 | |
---|
1184 | 1184 | if (!(sbi->s_mount_state & EXT4_FC_REPLAY)) { |
---|
1185 | 1185 | grp = ext4_get_group_info(sb, group); |
---|
| 1186 | + if (!grp) { |
---|
| 1187 | + err = -EFSCORRUPTED; |
---|
| 1188 | + goto out; |
---|
| 1189 | + } |
---|
1186 | 1190 | down_read(&grp->alloc_sem); /* |
---|
1187 | 1191 | * protect vs itable |
---|
1188 | 1192 | * lazyinit |
---|
.. | .. |
---|
1526 | 1530 | } |
---|
1527 | 1531 | |
---|
1528 | 1532 | gdp = ext4_get_group_desc(sb, group, &group_desc_bh); |
---|
1529 | | - if (!gdp) |
---|
| 1533 | + if (!gdp || !grp) |
---|
1530 | 1534 | goto out; |
---|
1531 | 1535 | |
---|
1532 | 1536 | /* |
---|