mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-31 22:50:30 +03:00
qemu: prevent invalid reads in qemuAssignDevicePCISlots
Don't reserve slot 2 for video if the machine has no PCI buses. Error out when the user specifies a video device without a PCI address when there are no PCI buses. (This wouldn't work on a machine with no PCI bus anyway since we do add PCI addresses for video devices to the command line)
This commit is contained in:
parent
877bc08947
commit
379e4bcce5
@ -1909,6 +1909,9 @@ qemuAssignDevicePCISlots(virDomainDefPtr def,
|
||||
primaryVideo->info.addr.pci.function = 0;
|
||||
addrptr = &primaryVideo->info.addr.pci;
|
||||
|
||||
if (!qemuPCIAddressValidate(addrs, addrptr))
|
||||
goto error;
|
||||
|
||||
if (qemuDomainPCIAddressSlotInUse(addrs, addrptr)) {
|
||||
if (qemuDeviceVideoUsable) {
|
||||
virResetLastError();
|
||||
@ -1935,7 +1938,7 @@ qemuAssignDevicePCISlots(virDomainDefPtr def,
|
||||
/* If TYPE==PCI, then qemuCollectPCIAddress() function
|
||||
* has already reserved the address, so we must skip */
|
||||
}
|
||||
} else if (!qemuDeviceVideoUsable) {
|
||||
} else if (addrs->nbuses && !qemuDeviceVideoUsable) {
|
||||
memset(&tmp_addr, 0, sizeof(tmp_addr));
|
||||
tmp_addr.slot = 2;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user