ftl: fix address calculation in read_page_desc()
This commit is contained in:
parent
bbc799f805
commit
f0a8439c51
1 changed files with 7 additions and 3 deletions
|
@ -87,11 +87,15 @@ int read_page_desc(struct ftl_map *map,
|
|||
{
|
||||
uint32_t addr, offset;
|
||||
|
||||
addr = align(upage, map->log2_pages_per_group) +
|
||||
(1 << map->log2_pages_per_group) - 1;
|
||||
|
||||
if (addr == upage)
|
||||
return -1;
|
||||
|
||||
addr <<= map->log2_page_size;
|
||||
offset = sizeof(struct ftl_page_group) +
|
||||
BIT_MASK(upage, map->log2_pages_per_group) * sizeof *page_desc;
|
||||
upage = align(upage, map->log2_pages_per_group) +
|
||||
(1 << map->log2_pages_per_group) - 1;
|
||||
addr = upage << map->log2_page_size;
|
||||
|
||||
if (flash_read(map->dev, addr + offset, page_desc, sizeof *page_desc) == 0)
|
||||
return -1;
|
||||
|
|
Loading…
Add table
Reference in a new issue