On 06/13/2018 04:15 AM, Ján Tomko wrote: > On Tue, Jun 12, 2018 at 10:32:06AM -0400, John Ferlan wrote: >> Add a check during qemuDomainAttachDeviceConfig whether the >> new/incoming <hostdev ...> device would have an existing >> <address> already and if so fail the attach. This can happen >> if two hostdev's are added supplying the same address or >> if the new hostdev address could possibly be a duplicate >> of an existing SCSI <disk>. >> >> Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> >> --- >> src/qemu/qemu_driver.c | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c >> index f0fb806fcd..ae8e0e898a 100644 >> --- a/src/qemu/qemu_driver.c >> +++ b/src/qemu/qemu_driver.c >> @@ -8015,6 +8015,12 @@ qemuDomainAttachDeviceConfig(virDomainDefPtr >> vmdef, >> _("device is already in the domain >> configuration")); >> return -1; >> } >> + if (dev->data.hostdev->info->type != >> VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE && >> + virDomainDefHasDeviceAddress(vmdef, >> dev->data.hostdev->info)) { >> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", >> + _("a device with the same address already >> exists ")); >> + return -1; >> + } > > This check feels out of place here. We should be checking for that in > postParse. Do we have the same problem on domain startup? > I've avoided new post parse checks due to the domain disappearing phenomena. But no, I don't believe the same problem exists there. How would you suggest reproducing that? If one virsh edit's their domain adding two hostdev's with the same <address>, then virDomainDefValidateInternal catches that with the call to virDomainDefCheckDuplicateDriveAddresses. With this patch if one calls attach-device --config with a duplicated <address>, then this check will catch that. This is similar to VIR_DOMAIN_DEVICE_RNG processing in the same code. John > Jano > >> if (virDomainHostdevInsert(vmdef, hostdev)) >> return -1; >> dev->data.hostdev = NULL; >> -- >> 2.14.4 >> >> -- >> libvir-list mailing list >> libvir-list@xxxxxxxxxx >> https://www.redhat.com/mailman/listinfo/libvir-list -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list