diff --git a/virtio-devices/src/mem.rs b/virtio-devices/src/mem.rs index 434401377..9ad21bd90 100644 --- a/virtio-devices/src/mem.rs +++ b/virtio-devices/src/mem.rs @@ -270,7 +270,7 @@ impl VirtioMemConfig { // in the usable region. if addr % self.block_size != 0 || size == 0 - || (addr < self.addr || addr + size >= self.addr + self.usable_region_size) + || (addr < self.addr || addr + size > self.addr + self.usable_region_size) { return false; } diff --git a/vmm/src/memory_manager.rs b/vmm/src/memory_manager.rs index ecbfe8817..798f641ef 100644 --- a/vmm/src/memory_manager.rs +++ b/vmm/src/memory_manager.rs @@ -1675,7 +1675,11 @@ impl MemoryManager { let start_addr = MemoryManager::start_addr(self.guest_memory.memory().last_addr(), true)?; - if start_addr.checked_add(size.try_into().unwrap()).unwrap() >= self.end_of_ram_area { + if start_addr + .checked_add((size - 1).try_into().unwrap()) + .unwrap() + > self.end_of_ram_area + { return Err(Error::InsufficientHotplugRam); }