Commit 2f359aea authored by Neil Armstrong's avatar Neil Armstrong Committed by Anas Nashif
Browse files

mmu: fix virt_region_alloc() unused region free when aligned



In the case where the aligned memory range is on top of the allocated
memory range, freeing the 0 sized top unused memory will trigger
an assert in the virt_region_free() call since vaddr could be equal
to Z_VIRT_REGION_END_ADDR.

Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
parent 513d691d
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -313,8 +313,10 @@ static void *virt_region_alloc(size_t size, size_t align)
		/* Free the two unused regions */
		virt_region_free(UINT_TO_POINTER(dest_addr),
				 aligned_dest_addr - dest_addr);
		if (((dest_addr + alloc_size) - (aligned_dest_addr + size)) > 0) {
			virt_region_free(UINT_TO_POINTER(aligned_dest_addr + size),
					 (dest_addr + alloc_size) - (aligned_dest_addr + size));
		}

		dest_addr = aligned_dest_addr;
	}