On Thu, Sep 09, 2021 at 13:46:41 -0400, Laine Stump wrote:
The ACPI index of a device in a running guest can't be modified,
and
libvirt doesn't actually attempt to modify it, but it was possible for
a user to request such a modification, and libvirt wouldn't complain,
thus misleading the user into thinking that it had actually been changed.
Resolves:
https://bugzilla.redhat.com/1998920
Signed-off-by: Laine Stump <laine(a)redhat.com>
---
src/conf/domain_conf.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index fefc527901..7ff890d8b7 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -28485,6 +28485,12 @@ virDomainDefCompatibleDevice(virDomainDef *def,
_("changing device alias is not allowed"));
return -1;
}
+
+ if (data.newInfo->acpiIndex != data.oldInfo->acpiIndex) {
+ virReportError(VIR_ERR_OPERATION_DENIED, "%s",
+ _("changing device 'acpi index' is not
allowed"));
+ return -1;
+ }
I don't remember any more what the intended semantics of the 'update'
API are in regards to asking the user to provide a complete definition
of the device, but according to the 'alias' check above we seem to be
specifically ignoring the situation when the new definition didn't
provide an alias. This seems to be hinting that we ignore stuff that the
used didn't provide.
If that's the case you'll need to specifically exclude index '0' from
the above check.