@@ -65,16 +65,21 @@ void numa_set_mem_node_id(ram_addr_t addr, uint64_t size, uint32_t node)
}
range->mem_start = addr;
- range->mem_end = addr + size - 1;
+ range->mem_end = addr + size;
+ g_assert(range->mem_end >= MAX(addr, size));
+ range->mem_end -= 1;
QLIST_INSERT_HEAD(&numa_info[node].addr, range, entry);
}
void numa_unset_mem_node_id(ram_addr_t addr, uint64_t size, uint32_t node)
{
struct numa_addr_range *range, *next;
+ ram_addr_t end = addr + size;
+ g_assert(end >= MAX(addr, size));
+ end -= 1;
QLIST_FOREACH_SAFE(range, &numa_info[node].addr, entry, next) {
- if (addr == range->mem_start && (addr + size - 1) == range->mem_end) {
+ if (addr == range->mem_start && end == range->mem_end) {
QLIST_REMOVE(range, entry);
g_free(range);
return;