Inside of virDomainMemoryDefValidate() there's a check that
address where a virtio-mem memory device is mapped to is a
multiple of its block size. But this check is off by a couple of
bits, because the memory address is in bytes while the block size
is in kibibytes. Therefore, when checking whether address is a
multiple of the block size, the latter has to be multiplied by a
factor of 1024.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
return -1;
}
- if (mem->target.virtio_mem.address % mem->target.virtio_mem.blocksize != 0) {
+ /* blocksize is stored in KiB while address is in bytes */
+ if (mem->target.virtio_mem.address % (mem->target.virtio_mem.blocksize * 1024) != 0) {
virReportError(VIR_ERR_XML_DETAIL, "%s",
_("memory device address must be aligned to blocksize"));
return -1;