mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-28 23:50:26 +09:00
ext4: Use correct descriptor size when reading the block group descriptor
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 <stefan.bruens@rwth-aachen.de>
This commit is contained in:
parent
9f5dd8b6e2
commit
f798b1dda1
@ -1527,20 +1527,20 @@ static int ext4fs_blockgroup
|
|||||||
long int blkno;
|
long int blkno;
|
||||||
unsigned int blkoff, desc_per_blk;
|
unsigned int blkoff, desc_per_blk;
|
||||||
int log2blksz = get_fs()->dev_desc->log2blksz;
|
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 +
|
blkno = le32_to_cpu(data->sblock.first_data_block) + 1 +
|
||||||
group / desc_per_blk;
|
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",
|
debug("ext4fs read %d group descriptor (blkno %ld blkoff %u)\n",
|
||||||
group, blkno, blkoff);
|
group, blkno, blkoff);
|
||||||
|
|
||||||
return ext4fs_devread((lbaint_t)blkno <<
|
return ext4fs_devread((lbaint_t)blkno <<
|
||||||
(LOG2_BLOCK_SIZE(data) - log2blksz),
|
(LOG2_BLOCK_SIZE(data) - log2blksz),
|
||||||
blkoff, sizeof(struct ext2_block_group),
|
blkoff, desc_size, (char *)blkgrp);
|
||||||
(char *)blkgrp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ext4fs_read_inode(struct ext2_data *data, int ino, struct ext2_inode *inode)
|
int ext4fs_read_inode(struct ext2_data *data, int ino, struct ext2_inode *inode)
|
||||||
|
Loading…
Reference in New Issue
Block a user