364eff6885
When running with "dynamic-memslots=off", we enter
virtio_mem_activate_memslots_to_plug() to return immediately again
because "vmem->dynamic_memslots == false". However, the compiler might
not optimize out calculating start_idx+end_idx, where we divide by
vmem->memslot_size. In such a configuration, the memslot size is 0 and
we'll get a division by zero:
(qemu) qom-set vmem0 requested-size 3G
(qemu) q35.sh: line 38: 622940 Floating point exception(core dumped)
The same is true for virtio_mem_deactivate_unplugged_memslots(), however
we never really reach that code without a prior
virtio_mem_activate_memslots_to_plug() call.
Let's fix it by simply calling these functions only with
"dynamic-memslots=on".
This was found when using a debug build of QEMU.
Message-ID: <20231023111341.219317-1-david@redhat.com>
Reprted-by: Mario Casquero <mcasquer@redhat.com>
Fixes:
|
||
---|---|---|
.. | ||
Kconfig | ||
meson.build | ||
trace-events | ||
trace.h | ||
vdpa-dev-pci.c | ||
vdpa-dev.c | ||
vhost-backend.c | ||
vhost-iova-tree.c | ||
vhost-iova-tree.h | ||
vhost-scsi-pci.c | ||
vhost-shadow-virtqueue.c | ||
vhost-shadow-virtqueue.h | ||
vhost-stub.c | ||
vhost-user-blk-pci.c | ||
vhost-user-device-pci.c | ||
vhost-user-device.c | ||
vhost-user-fs-pci.c | ||
vhost-user-fs.c | ||
vhost-user-gpio-pci.c | ||
vhost-user-gpio.c | ||
vhost-user-i2c-pci.c | ||
vhost-user-i2c.c | ||
vhost-user-input-pci.c | ||
vhost-user-rng-pci.c | ||
vhost-user-rng.c | ||
vhost-user-scmi-pci.c | ||
vhost-user-scmi.c | ||
vhost-user-scsi-pci.c | ||
vhost-user-vsock-pci.c | ||
vhost-user-vsock.c | ||
vhost-user.c | ||
vhost-vdpa.c | ||
vhost-vsock-common.c | ||
vhost-vsock-pci.c | ||
vhost-vsock.c | ||
vhost.c | ||
virtio-9p-pci.c | ||
virtio-balloon-pci.c | ||
virtio-balloon.c | ||
virtio-blk-pci.c | ||
virtio-bus.c | ||
virtio-config-io.c | ||
virtio-crypto-pci.c | ||
virtio-crypto.c | ||
virtio-hmp-cmds.c | ||
virtio-input-host-pci.c | ||
virtio-input-pci.c | ||
virtio-iommu-pci.c | ||
virtio-iommu.c | ||
virtio-md-pci.c | ||
virtio-mem-pci.c | ||
virtio-mem-pci.h | ||
virtio-mem.c | ||
virtio-mmio.c | ||
virtio-net-pci.c | ||
virtio-pci.c | ||
virtio-pmem-pci.c | ||
virtio-pmem-pci.h | ||
virtio-pmem.c | ||
virtio-qmp.c | ||
virtio-qmp.h | ||
virtio-rng-pci.c | ||
virtio-rng.c | ||
virtio-scsi-pci.c | ||
virtio-serial-pci.c | ||
virtio-stub.c | ||
virtio.c |