qemuDomainDetachShmemDevice: Don't release shmem address twice

On shmem unplug, when qemu doesn't support DEVICE_DELETED event
(or couple of other reasons) we do two things:

1) release shmem device address,
2) call qemuDomainRemoveShmemDevice() which does 1) again.

This is potentially dangerous.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2018-05-23 18:19:16 +02:00
parent aac088d998
commit c2fa7e7ffc

View File

@ -5291,11 +5291,9 @@ qemuDomainDetachShmemDevice(virQEMUDriverPtr driver,
ret = -1; ret = -1;
if (ret == 0) { if (ret == 0) {
if ((ret = qemuDomainWaitForDeviceRemoval(vm)) == 1) { if ((ret = qemuDomainWaitForDeviceRemoval(vm)) == 1)
qemuDomainReleaseDeviceAddress(vm, &shmem->info, NULL);
ret = qemuDomainRemoveShmemDevice(driver, vm, shmem); ret = qemuDomainRemoveShmemDevice(driver, vm, shmem);
} }
}
qemuDomainResetDeviceRemoval(vm); qemuDomainResetDeviceRemoval(vm);
return ret; return ret;