From f798b1dda1c5de818b806189e523d1b75db7e72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= Date: Sat, 17 Sep 2016 02:10:09 +0200 Subject: ext4: Use correct descriptor size when reading the block group descriptor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The correct descriptor size must be used when calculating offsets, and also to read the correct amount of data. Signed-off-by: Stefan BrĂ¼ns diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c index 81740f8..b745d8d 100644 --- a/fs/ext4/ext4_common.c +++ b/fs/ext4/ext4_common.c @@ -1527,20 +1527,20 @@ static int ext4fs_blockgroup long int blkno; unsigned int blkoff, desc_per_blk; int log2blksz = get_fs()->dev_desc->log2blksz; + int desc_size = get_fs()->gdsize; - desc_per_blk = EXT2_BLOCK_SIZE(data) / sizeof(struct ext2_block_group); + desc_per_blk = EXT2_BLOCK_SIZE(data) / desc_size; blkno = le32_to_cpu(data->sblock.first_data_block) + 1 + group / desc_per_blk; - blkoff = (group % desc_per_blk) * sizeof(struct ext2_block_group); + blkoff = (group % desc_per_blk) * desc_size; debug("ext4fs read %d group descriptor (blkno %ld blkoff %u)\n", group, blkno, blkoff); return ext4fs_devread((lbaint_t)blkno << (LOG2_BLOCK_SIZE(data) - log2blksz), - blkoff, sizeof(struct ext2_block_group), - (char *)blkgrp); + blkoff, desc_size, (char *)blkgrp); } int ext4fs_read_inode(struct ext2_data *data, int ino, struct ext2_inode *inode) -- cgit v0.10.2