diff options
| -rw-r--r-- | fs/ext4/inode.c | 5 | ||||
| -rw-r--r-- | fs/ext4/namei.c | 5 | ||||
| -rw-r--r-- | fs/ext4/resize.c | 28 | ||||
| -rw-r--r-- | fs/ext4/super.c | 17 | ||||
| -rw-r--r-- | fs/ext4/xattr.c | 27 |
5 files changed, 51 insertions, 31 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 05f01fbd9c7f..22a9d8159720 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
| @@ -5835,9 +5835,10 @@ int ext4_mark_iloc_dirty(handle_t *handle, | |||
| 5835 | { | 5835 | { |
| 5836 | int err = 0; | 5836 | int err = 0; |
| 5837 | 5837 | ||
| 5838 | if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) | 5838 | if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) { |
| 5839 | put_bh(iloc->bh); | ||
| 5839 | return -EIO; | 5840 | return -EIO; |
| 5840 | 5841 | } | |
| 5841 | if (IS_I_VERSION(inode)) | 5842 | if (IS_I_VERSION(inode)) |
| 5842 | inode_inc_iversion(inode); | 5843 | inode_inc_iversion(inode); |
| 5843 | 5844 | ||
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 17adcb16a9c8..437f71fe83ae 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c | |||
| @@ -126,6 +126,7 @@ static struct buffer_head *__ext4_read_dirblock(struct inode *inode, | |||
| 126 | if (!is_dx_block && type == INDEX) { | 126 | if (!is_dx_block && type == INDEX) { |
| 127 | ext4_error_inode(inode, func, line, block, | 127 | ext4_error_inode(inode, func, line, block, |
| 128 | "directory leaf block found instead of index block"); | 128 | "directory leaf block found instead of index block"); |
| 129 | brelse(bh); | ||
| 129 | return ERR_PTR(-EFSCORRUPTED); | 130 | return ERR_PTR(-EFSCORRUPTED); |
| 130 | } | 131 | } |
| 131 | if (!ext4_has_metadata_csum(inode->i_sb) || | 132 | if (!ext4_has_metadata_csum(inode->i_sb) || |
| @@ -2811,7 +2812,9 @@ int ext4_orphan_add(handle_t *handle, struct inode *inode) | |||
| 2811 | list_del_init(&EXT4_I(inode)->i_orphan); | 2812 | list_del_init(&EXT4_I(inode)->i_orphan); |
| 2812 | mutex_unlock(&sbi->s_orphan_lock); | 2813 | mutex_unlock(&sbi->s_orphan_lock); |
| 2813 | } | 2814 | } |
| 2814 | } | 2815 | } else |
| 2816 | brelse(iloc.bh); | ||
| 2817 | |||
| 2815 | jbd_debug(4, "superblock will point to %lu\n", inode->i_ino); | 2818 | jbd_debug(4, "superblock will point to %lu\n", inode->i_ino); |
| 2816 | jbd_debug(4, "orphan inode %lu will point to %d\n", | 2819 | jbd_debug(4, "orphan inode %lu will point to %d\n", |
| 2817 | inode->i_ino, NEXT_ORPHAN(inode)); | 2820 | inode->i_ino, NEXT_ORPHAN(inode)); |
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index ebbc663d0798..a5efee34415f 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c | |||
| @@ -459,16 +459,18 @@ static int set_flexbg_block_bitmap(struct super_block *sb, handle_t *handle, | |||
| 459 | 459 | ||
| 460 | BUFFER_TRACE(bh, "get_write_access"); | 460 | BUFFER_TRACE(bh, "get_write_access"); |
| 461 | err = ext4_journal_get_write_access(handle, bh); | 461 | err = ext4_journal_get_write_access(handle, bh); |
| 462 | if (err) | 462 | if (err) { |
| 463 | brelse(bh); | ||
| 463 | return err; | 464 | return err; |
| 465 | } | ||
| 464 | ext4_debug("mark block bitmap %#04llx (+%llu/%u)\n", | 466 | ext4_debug("mark block bitmap %#04llx (+%llu/%u)\n", |
| 465 | first_cluster, first_cluster - start, count2); | 467 | first_cluster, first_cluster - start, count2); |
| 466 | ext4_set_bits(bh->b_data, first_cluster - start, count2); | 468 | ext4_set_bits(bh->b_data, first_cluster - start, count2); |
| 467 | 469 | ||
| 468 | err = ext4_handle_dirty_metadata(handle, NULL, bh); | 470 | err = ext4_handle_dirty_metadata(handle, NULL, bh); |
| 471 | brelse(bh); | ||
| 469 | if (unlikely(err)) | 472 | if (unlikely(err)) |
| 470 | return err; | 473 | return err; |
| 471 | brelse(bh); | ||
| 472 | } | 474 | } |
| 473 | 475 | ||
| 474 | return 0; | 476 | return 0; |
| @@ -605,7 +607,6 @@ handle_bb: | |||
| 605 | bh = bclean(handle, sb, block); | 607 | bh = bclean(handle, sb, block); |
| 606 | if (IS_ERR(bh)) { | 608 | if (IS_ERR(bh)) { |
| 607 | err = PTR_ERR(bh); | 609 | err = PTR_ERR(bh); |
| 608 | bh = NULL; | ||
| 609 | goto out; | 610 | goto out; |
| 610 | } | 611 | } |
| 611 | overhead = ext4_group_overhead_blocks(sb, group); | 612 | overhead = ext4_group_overhead_blocks(sb, group); |
| @@ -618,9 +619,9 @@ handle_bb: | |||
| 618 | ext4_mark_bitmap_end(EXT4_B2C(sbi, group_data[i].blocks_count), | 619 | ext4_mark_bitmap_end(EXT4_B2C(sbi, group_data[i].blocks_count), |
| 619 | sb->s_blocksize * 8, bh->b_data); | 620 | sb->s_blocksize * 8, bh->b_data); |
| 620 | err = ext4_handle_dirty_metadata(handle, NULL, bh); | 621 | err = ext4_handle_dirty_metadata(handle, NULL, bh); |
| 622 | brelse(bh); | ||
| 621 | if (err) | 623 | if (err) |
| 622 | goto out; | 624 | goto out; |
| 623 | brelse(bh); | ||
| 624 | 625 | ||
| 625 | handle_ib: | 626 | handle_ib: |
| 626 | if (bg_flags[i] & EXT4_BG_INODE_UNINIT) | 627 | if (bg_flags[i] & EXT4_BG_INODE_UNINIT) |
| @@ -635,18 +636,16 @@ handle_ib: | |||
| 635 | bh = bclean(handle, sb, block); | 636 | bh = bclean(handle, sb, block); |
| 636 | if (IS_ERR(bh)) { | 637 | if (IS_ERR(bh)) { |
| 637 | err = PTR_ERR(bh); | 638 | err = PTR_ERR(bh); |
| 638 | bh = NULL; | ||
| 639 | goto out; | 639 | goto out; |
| 640 | } | 640 | } |
| 641 | 641 | ||
| 642 | ext4_mark_bitmap_end(EXT4_INODES_PER_GROUP(sb), | 642 | ext4_mark_bitmap_end(EXT4_INODES_PER_GROUP(sb), |
| 643 | sb->s_blocksize * 8, bh->b_data); | 643 | sb->s_blocksize * 8, bh->b_data); |
| 644 | err = ext4_handle_dirty_metadata(handle, NULL, bh); | 644 | err = ext4_handle_dirty_metadata(handle, NULL, bh); |
| 645 | brelse(bh); | ||
| 645 | if (err) | 646 | if (err) |
| 646 | goto out; | 647 | goto out; |
| 647 | brelse(bh); | ||
| 648 | } | 648 | } |
| 649 | bh = NULL; | ||
| 650 | 649 | ||
| 651 | /* Mark group tables in block bitmap */ | 650 | /* Mark group tables in block bitmap */ |
| 652 | for (j = 0; j < GROUP_TABLE_COUNT; j++) { | 651 | for (j = 0; j < GROUP_TABLE_COUNT; j++) { |
| @@ -685,7 +684,6 @@ handle_ib: | |||
| 685 | } | 684 | } |
| 686 | 685 | ||
| 687 | out: | 686 | out: |
| 688 | brelse(bh); | ||
| 689 | err2 = ext4_journal_stop(handle); | 687 | err2 = ext4_journal_stop(handle); |
| 690 | if (err2 && !err) | 688 | if (err2 && !err) |
| 691 | err = err2; | 689 | err = err2; |
| @@ -873,6 +871,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode, | |||
| 873 | err = ext4_handle_dirty_metadata(handle, NULL, gdb_bh); | 871 | err = ext4_handle_dirty_metadata(handle, NULL, gdb_bh); |
| 874 | if (unlikely(err)) { | 872 | if (unlikely(err)) { |
| 875 | ext4_std_error(sb, err); | 873 | ext4_std_error(sb, err); |
| 874 | iloc.bh = NULL; | ||
| 876 | goto exit_inode; | 875 | goto exit_inode; |
| 877 | } | 876 | } |
| 878 | brelse(dind); | 877 | brelse(dind); |
| @@ -924,6 +923,7 @@ static int add_new_gdb_meta_bg(struct super_block *sb, | |||
| 924 | sizeof(struct buffer_head *), | 923 | sizeof(struct buffer_head *), |
| 925 | GFP_NOFS); | 924 | GFP_NOFS); |
| 926 | if (!n_group_desc) { | 925 | if (!n_group_desc) { |
| 926 | brelse(gdb_bh); | ||
| 927 | err = -ENOMEM; | 927 | err = -ENOMEM; |
| 928 | ext4_warning(sb, "not enough memory for %lu groups", | 928 | ext4_warning(sb, "not enough memory for %lu groups", |
| 929 | gdb_num + 1); | 929 | gdb_num + 1); |
| @@ -939,8 +939,6 @@ static int add_new_gdb_meta_bg(struct super_block *sb, | |||
| 939 | kvfree(o_group_desc); | 939 | kvfree(o_group_desc); |
| 940 | BUFFER_TRACE(gdb_bh, "get_write_access"); | 940 | BUFFER_TRACE(gdb_bh, "get_write_access"); |
| 941 | err = ext4_journal_get_write_access(handle, gdb_bh); | 941 | err = ext4_journal_get_write_access(handle, gdb_bh); |
| 942 | if (unlikely(err)) | ||
| 943 | brelse(gdb_bh); | ||
| 944 | return err; | 942 | return err; |
| 945 | } | 943 | } |
| 946 | 944 | ||
| @@ -1124,8 +1122,10 @@ static void update_backups(struct super_block *sb, sector_t blk_off, char *data, | |||
| 1124 | backup_block, backup_block - | 1122 | backup_block, backup_block - |
| 1125 | ext4_group_first_block_no(sb, group)); | 1123 | ext4_group_first_block_no(sb, group)); |
| 1126 | BUFFER_TRACE(bh, "get_write_access"); | 1124 | BUFFER_TRACE(bh, "get_write_access"); |
| 1127 | if ((err = ext4_journal_get_write_access(handle, bh))) | 1125 | if ((err = ext4_journal_get_write_access(handle, bh))) { |
| 1126 | brelse(bh); | ||
| 1128 | break; | 1127 | break; |
| 1128 | } | ||
| 1129 | lock_buffer(bh); | 1129 | lock_buffer(bh); |
| 1130 | memcpy(bh->b_data, data, size); | 1130 | memcpy(bh->b_data, data, size); |
| 1131 | if (rest) | 1131 | if (rest) |
| @@ -2023,7 +2023,7 @@ retry: | |||
| 2023 | 2023 | ||
| 2024 | err = ext4_alloc_flex_bg_array(sb, n_group + 1); | 2024 | err = ext4_alloc_flex_bg_array(sb, n_group + 1); |
| 2025 | if (err) | 2025 | if (err) |
| 2026 | return err; | 2026 | goto out; |
| 2027 | 2027 | ||
| 2028 | err = ext4_mb_alloc_groupinfo(sb, n_group + 1); | 2028 | err = ext4_mb_alloc_groupinfo(sb, n_group + 1); |
| 2029 | if (err) | 2029 | if (err) |
| @@ -2059,6 +2059,10 @@ retry: | |||
| 2059 | n_blocks_count_retry = 0; | 2059 | n_blocks_count_retry = 0; |
| 2060 | free_flex_gd(flex_gd); | 2060 | free_flex_gd(flex_gd); |
| 2061 | flex_gd = NULL; | 2061 | flex_gd = NULL; |
| 2062 | if (resize_inode) { | ||
| 2063 | iput(resize_inode); | ||
| 2064 | resize_inode = NULL; | ||
| 2065 | } | ||
| 2062 | goto retry; | 2066 | goto retry; |
| 2063 | } | 2067 | } |
| 2064 | 2068 | ||
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index a221f1cdf704..53ff6c2a26ed 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
| @@ -4075,6 +4075,14 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) | |||
| 4075 | sbi->s_groups_count = blocks_count; | 4075 | sbi->s_groups_count = blocks_count; |
| 4076 | sbi->s_blockfile_groups = min_t(ext4_group_t, sbi->s_groups_count, | 4076 | sbi->s_blockfile_groups = min_t(ext4_group_t, sbi->s_groups_count, |
| 4077 | (EXT4_MAX_BLOCK_FILE_PHYS / EXT4_BLOCKS_PER_GROUP(sb))); | 4077 | (EXT4_MAX_BLOCK_FILE_PHYS / EXT4_BLOCKS_PER_GROUP(sb))); |
| 4078 | if (((u64)sbi->s_groups_count * sbi->s_inodes_per_group) != | ||
| 4079 | le32_to_cpu(es->s_inodes_count)) { | ||
| 4080 | ext4_msg(sb, KERN_ERR, "inodes count not valid: %u vs %llu", | ||
| 4081 | le32_to_cpu(es->s_inodes_count), | ||
| 4082 | ((u64)sbi->s_groups_count * sbi->s_inodes_per_group)); | ||
| 4083 | ret = -EINVAL; | ||
| 4084 | goto failed_mount; | ||
| 4085 | } | ||
| 4078 | db_count = (sbi->s_groups_count + EXT4_DESC_PER_BLOCK(sb) - 1) / | 4086 | db_count = (sbi->s_groups_count + EXT4_DESC_PER_BLOCK(sb) - 1) / |
| 4079 | EXT4_DESC_PER_BLOCK(sb); | 4087 | EXT4_DESC_PER_BLOCK(sb); |
| 4080 | if (ext4_has_feature_meta_bg(sb)) { | 4088 | if (ext4_has_feature_meta_bg(sb)) { |
| @@ -4094,14 +4102,6 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) | |||
| 4094 | ret = -ENOMEM; | 4102 | ret = -ENOMEM; |
| 4095 | goto failed_mount; | 4103 | goto failed_mount; |
| 4096 | } | 4104 | } |
| 4097 | if (((u64)sbi->s_groups_count * sbi->s_inodes_per_group) != | ||
| 4098 | le32_to_cpu(es->s_inodes_count)) { | ||
| 4099 | ext4_msg(sb, KERN_ERR, "inodes count not valid: %u vs %llu", | ||
| 4100 | le32_to_cpu(es->s_inodes_count), | ||
| 4101 | ((u64)sbi->s_groups_count * sbi->s_inodes_per_group)); | ||
| 4102 | ret = -EINVAL; | ||
| 4103 | goto failed_mount; | ||
| 4104 | } | ||
| 4105 | 4105 | ||
| 4106 | bgl_lock_init(sbi->s_blockgroup_lock); | 4106 | bgl_lock_init(sbi->s_blockgroup_lock); |
| 4107 | 4107 | ||
| @@ -4510,6 +4510,7 @@ failed_mount6: | |||
| 4510 | percpu_counter_destroy(&sbi->s_freeinodes_counter); | 4510 | percpu_counter_destroy(&sbi->s_freeinodes_counter); |
| 4511 | percpu_counter_destroy(&sbi->s_dirs_counter); | 4511 | percpu_counter_destroy(&sbi->s_dirs_counter); |
| 4512 | percpu_counter_destroy(&sbi->s_dirtyclusters_counter); | 4512 | percpu_counter_destroy(&sbi->s_dirtyclusters_counter); |
| 4513 | percpu_free_rwsem(&sbi->s_journal_flag_rwsem); | ||
| 4513 | failed_mount5: | 4514 | failed_mount5: |
| 4514 | ext4_ext_release(sb); | 4515 | ext4_ext_release(sb); |
| 4515 | ext4_release_system_zone(sb); | 4516 | ext4_release_system_zone(sb); |
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index f36fc5d5b257..7643d52c776c 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c | |||
| @@ -1031,10 +1031,8 @@ static int ext4_xattr_inode_update_ref(handle_t *handle, struct inode *ea_inode, | |||
| 1031 | inode_lock(ea_inode); | 1031 | inode_lock(ea_inode); |
| 1032 | 1032 | ||
| 1033 | ret = ext4_reserve_inode_write(handle, ea_inode, &iloc); | 1033 | ret = ext4_reserve_inode_write(handle, ea_inode, &iloc); |
| 1034 | if (ret) { | 1034 | if (ret) |
| 1035 | iloc.bh = NULL; | ||
| 1036 | goto out; | 1035 | goto out; |
| 1037 | } | ||
| 1038 | 1036 | ||
| 1039 | ref_count = ext4_xattr_inode_get_ref(ea_inode); | 1037 | ref_count = ext4_xattr_inode_get_ref(ea_inode); |
| 1040 | ref_count += ref_change; | 1038 | ref_count += ref_change; |
| @@ -1080,12 +1078,10 @@ static int ext4_xattr_inode_update_ref(handle_t *handle, struct inode *ea_inode, | |||
| 1080 | } | 1078 | } |
| 1081 | 1079 | ||
| 1082 | ret = ext4_mark_iloc_dirty(handle, ea_inode, &iloc); | 1080 | ret = ext4_mark_iloc_dirty(handle, ea_inode, &iloc); |
| 1083 | iloc.bh = NULL; | ||
| 1084 | if (ret) | 1081 | if (ret) |
| 1085 | ext4_warning_inode(ea_inode, | 1082 | ext4_warning_inode(ea_inode, |
| 1086 | "ext4_mark_iloc_dirty() failed ret=%d", ret); | 1083 | "ext4_mark_iloc_dirty() failed ret=%d", ret); |
| 1087 | out: | 1084 | out: |
| 1088 | brelse(iloc.bh); | ||
| 1089 | inode_unlock(ea_inode); | 1085 | inode_unlock(ea_inode); |
| 1090 | return ret; | 1086 | return ret; |
| 1091 | } | 1087 | } |
| @@ -1388,6 +1384,12 @@ retry: | |||
| 1388 | bh = ext4_getblk(handle, ea_inode, block, 0); | 1384 | bh = ext4_getblk(handle, ea_inode, block, 0); |
| 1389 | if (IS_ERR(bh)) | 1385 | if (IS_ERR(bh)) |
| 1390 | return PTR_ERR(bh); | 1386 | return PTR_ERR(bh); |
| 1387 | if (!bh) { | ||
| 1388 | WARN_ON_ONCE(1); | ||
| 1389 | EXT4_ERROR_INODE(ea_inode, | ||
| 1390 | "ext4_getblk() return bh = NULL"); | ||
| 1391 | return -EFSCORRUPTED; | ||
| 1392 | } | ||
| 1391 | ret = ext4_journal_get_write_access(handle, bh); | 1393 | ret = ext4_journal_get_write_access(handle, bh); |
| 1392 | if (ret) | 1394 | if (ret) |
| 1393 | goto out; | 1395 | goto out; |
| @@ -2276,8 +2278,10 @@ static struct buffer_head *ext4_xattr_get_block(struct inode *inode) | |||
| 2276 | if (!bh) | 2278 | if (!bh) |
| 2277 | return ERR_PTR(-EIO); | 2279 | return ERR_PTR(-EIO); |
| 2278 | error = ext4_xattr_check_block(inode, bh); | 2280 | error = ext4_xattr_check_block(inode, bh); |
| 2279 | if (error) | 2281 | if (error) { |
| 2282 | brelse(bh); | ||
| 2280 | return ERR_PTR(error); | 2283 | return ERR_PTR(error); |
| 2284 | } | ||
| 2281 | return bh; | 2285 | return bh; |
| 2282 | } | 2286 | } |
| 2283 | 2287 | ||
| @@ -2397,6 +2401,8 @@ retry_inode: | |||
| 2397 | error = ext4_xattr_block_set(handle, inode, &i, &bs); | 2401 | error = ext4_xattr_block_set(handle, inode, &i, &bs); |
| 2398 | } else if (error == -ENOSPC) { | 2402 | } else if (error == -ENOSPC) { |
| 2399 | if (EXT4_I(inode)->i_file_acl && !bs.s.base) { | 2403 | if (EXT4_I(inode)->i_file_acl && !bs.s.base) { |
| 2404 | brelse(bs.bh); | ||
| 2405 | bs.bh = NULL; | ||
| 2400 | error = ext4_xattr_block_find(inode, &i, &bs); | 2406 | error = ext4_xattr_block_find(inode, &i, &bs); |
| 2401 | if (error) | 2407 | if (error) |
| 2402 | goto cleanup; | 2408 | goto cleanup; |
| @@ -2617,6 +2623,8 @@ out: | |||
| 2617 | kfree(buffer); | 2623 | kfree(buffer); |
| 2618 | if (is) | 2624 | if (is) |
| 2619 | brelse(is->iloc.bh); | 2625 | brelse(is->iloc.bh); |
| 2626 | if (bs) | ||
| 2627 | brelse(bs->bh); | ||
| 2620 | kfree(is); | 2628 | kfree(is); |
| 2621 | kfree(bs); | 2629 | kfree(bs); |
| 2622 | 2630 | ||
| @@ -2696,7 +2704,6 @@ int ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize, | |||
| 2696 | struct ext4_inode *raw_inode, handle_t *handle) | 2704 | struct ext4_inode *raw_inode, handle_t *handle) |
| 2697 | { | 2705 | { |
| 2698 | struct ext4_xattr_ibody_header *header; | 2706 | struct ext4_xattr_ibody_header *header; |
| 2699 | struct buffer_head *bh; | ||
| 2700 | struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); | 2707 | struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); |
| 2701 | static unsigned int mnt_count; | 2708 | static unsigned int mnt_count; |
| 2702 | size_t min_offs; | 2709 | size_t min_offs; |
| @@ -2737,13 +2744,17 @@ retry: | |||
| 2737 | * EA block can hold new_extra_isize bytes. | 2744 | * EA block can hold new_extra_isize bytes. |
| 2738 | */ | 2745 | */ |
| 2739 | if (EXT4_I(inode)->i_file_acl) { | 2746 | if (EXT4_I(inode)->i_file_acl) { |
| 2747 | struct buffer_head *bh; | ||
| 2748 | |||
| 2740 | bh = sb_bread(inode->i_sb, EXT4_I(inode)->i_file_acl); | 2749 | bh = sb_bread(inode->i_sb, EXT4_I(inode)->i_file_acl); |
| 2741 | error = -EIO; | 2750 | error = -EIO; |
| 2742 | if (!bh) | 2751 | if (!bh) |
| 2743 | goto cleanup; | 2752 | goto cleanup; |
| 2744 | error = ext4_xattr_check_block(inode, bh); | 2753 | error = ext4_xattr_check_block(inode, bh); |
| 2745 | if (error) | 2754 | if (error) { |
| 2755 | brelse(bh); | ||
| 2746 | goto cleanup; | 2756 | goto cleanup; |
| 2757 | } | ||
| 2747 | base = BHDR(bh); | 2758 | base = BHDR(bh); |
| 2748 | end = bh->b_data + bh->b_size; | 2759 | end = bh->b_data + bh->b_size; |
| 2749 | min_offs = end - base; | 2760 | min_offs = end - base; |
