ftl: fix address calculation in read_page_desc()

tags/0.1.0
S.J.R. van Schaik 8 years ago
parent bbc799f805
commit f0a8439c51
  1. 10
      source/ftl/map.c

@ -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…
Cancel
Save