Fixed an arithmetic bug causing reserved memory regions at address 0x00 to be ignored
This commit is contained in:
@@ -192,7 +192,12 @@ void __next_memory_region(memblock_iter_t *it, memblock_type_t *type_a, memblock
|
|||||||
* if we have gone past the last reserved region, these variables delimit the range between the end
|
* if we have gone past the last reserved region, these variables delimit the range between the end
|
||||||
* of the last reserved region and the end of memory. */
|
* of the last reserved region and the end of memory. */
|
||||||
uintptr_t r_start = idx_b > 0 ? r[-1].limit + 1 : 0;
|
uintptr_t r_start = idx_b > 0 ? r[-1].limit + 1 : 0;
|
||||||
uintptr_t r_end = idx_b < type_b->count ? r->base - 1 : ADDR_MAX;
|
uintptr_t r_end = idx_b < type_b->count ? r->base : ADDR_MAX;
|
||||||
|
|
||||||
|
if (r_start == r_end) {
|
||||||
|
/* this free region has a length of zero, move to the next one */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (r_start >= m_end) {
|
if (r_start >= m_end) {
|
||||||
/* we've gone past the end of the current memory region, and need to go to the next one */
|
/* we've gone past the end of the current memory region, and need to go to the next one */
|
||||||
|
|||||||
Reference in New Issue
Block a user