mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
qemuDomainRemoveRNGDevice: Remove associated chardev too
https://bugzilla.redhat.com/show_bug.cgi?id=1656014 An RNG device can consists of more devices than RND device itself. For instance, in case of EGD there is a chardev that connects to EGD daemon and feeds the qemu with random data. When doing RNG device removal we have to remove the associated chardev as well. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
e5c1fbca24
commit
7730a2ead4
@ -4814,7 +4814,7 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver,
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
ssize_t idx;
|
||||
int ret = -1;
|
||||
int rc;
|
||||
int rc = 0;
|
||||
|
||||
VIR_DEBUG("Removing RNG device %s from domain %p %s",
|
||||
rng->info.alias, vm, vm->def->name);
|
||||
@ -4828,7 +4828,17 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver,
|
||||
|
||||
qemuDomainObjEnterMonitor(driver, vm);
|
||||
|
||||
rc = qemuMonitorDelObject(priv->mon, objAlias);
|
||||
if (qemuDomainDetachExtensionDevice(priv->mon, &rng->info) < 0)
|
||||
rc = -1;
|
||||
|
||||
if (rc == 0 &&
|
||||
qemuMonitorDelObject(priv->mon, objAlias) < 0)
|
||||
rc = -1;
|
||||
|
||||
if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD &&
|
||||
rc == 0 &&
|
||||
qemuMonitorDetachCharDev(priv->mon, charAlias) < 0)
|
||||
rc = -1;
|
||||
|
||||
if (qemuDomainObjExitMonitor(driver, vm) < 0)
|
||||
goto cleanup;
|
||||
@ -4837,7 +4847,7 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver,
|
||||
rc == 0 &&
|
||||
qemuDomainDelChardevTLSObjects(driver, vm, rng->source.chardev,
|
||||
charAlias) < 0)
|
||||
goto cleanup;
|
||||
rc = -1;
|
||||
|
||||
virDomainAuditRNG(vm, rng, NULL, "detach", rc == 0);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user