diff --git a/lib/system/freertos/io.c b/lib/system/freertos/io.c index 319322c7..5e4e2f9d 100644 --- a/lib/system/freertos/io.c +++ b/lib/system/freertos/io.c @@ -22,7 +22,7 @@ void metal_sys_io_mem_map(struct metal_io_region *io) if (psize) { if (psize >> io->page_shift) psize = (size_t)1 << io->page_shift; - for (p = 0; p <= (io->size >> io->page_shift); p++) { + for (p = 0; p <= ((io->size - 1) >> io->page_shift); p++) { metal_machine_io_mem_map(va, io->physmap[p], psize, io->mem_flags); va += psize; diff --git a/lib/system/generic/io.c b/lib/system/generic/io.c index 966bfc56..6fc5bb60 100644 --- a/lib/system/generic/io.c +++ b/lib/system/generic/io.c @@ -22,7 +22,7 @@ void metal_sys_io_mem_map(struct metal_io_region *io) if (psize) { if (psize >> io->page_shift) psize = (size_t)1 << io->page_shift; - for (p = 0; p <= (io->size >> io->page_shift); p++) { + for (p = 0; p <= ((io->size - 1) >> io->page_shift); p++) { metal_machine_io_mem_map(va, io->physmap[p], psize, io->mem_flags); va += psize;