summaryrefslogtreecommitdiffstats
path: root/fs/ext4
diff options
context:
space:
mode:
authorAntony Pavlov <antonynpavlov@gmail.com>2017-03-20 15:35:32 +0300
committerSascha Hauer <s.hauer@pengutronix.de>2017-03-30 08:23:19 +0200
commit6e789532709a3d4268dca851536ad86a8b0ca583 (patch)
tree27a7f280983f51a3bbbaf55220f8335e6d92b6db /fs/ext4
parent18f01ff3eb1da7b2da4679bdd3fd1e3ce91e699d (diff)
downloadbarebox-6e789532709a3d4268dca851536ad86a8b0ca583.tar.gz
barebox-6e789532709a3d4268dca851536ad86a8b0ca583.tar.xz
ext4: Use correct descriptor size when reading the block group descriptor
This is an adoption of the U-Boot commit | commit f798b1dda1c5de818b806189e523d1b75db7e72d | Author: Stefan Brüns <stefan.bruens@rwth-aachen.de> | Date: Sat Sep 17 02:10:09 2016 +0200 | | 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> Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs/ext4')
-rw-r--r--fs/ext4/ext4_common.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c
index f35eebc217..55e837b4bd 100644
--- a/fs/ext4/ext4_common.c
+++ b/fs/ext4/ext4_common.c
@@ -83,19 +83,19 @@ static int ext4fs_blockgroup(struct ext2_data *data, int group,
long int blkno;
unsigned int blkoff, desc_per_blk;
struct ext_filesystem *fs = data->fs;
+ int desc_size = 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;
dev_dbg(fs->dev, "read %d group descriptor (blkno %ld blkoff %u)\n",
group, blkno, blkoff);
return ext4fs_devread(fs, blkno << LOG2_EXT2_BLOCK_SIZE(data),
- 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)