[libvirt PATCH 04/10] virDomainFeaturesHyperVDefParse: Read attribute "mode" of element "hyperv"

Daniel P. Berrangé berrange at redhat.com
Tue Dec 14 16:02:25 UTC 2021


On Fri, Nov 26, 2021 at 03:34:56PM +0100, Tim Wiederhake wrote:
> Currently, this attribute may either have a value of "custom", or be absent
> (which defaults to "custom"), for backwards compatibility.
> 
> Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
> ---
>  src/conf/domain_conf.c   | 11 +++++++++--
>  src/qemu/qemu_command.c  |  2 +-
>  src/qemu/qemu_validate.c |  2 +-
>  3 files changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 74d86a346a..0ea00955c5 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -17453,7 +17453,14 @@ static int
>  virDomainFeaturesHyperVDefParse(virDomainDef *def,
>                                  xmlNodePtr node)
>  {
> -    def->features[VIR_DOMAIN_FEATURE_HYPERV] = VIR_TRISTATE_SWITCH_ON;
> +    virDomainHyperVMode mode;
> +
> +    if (virXMLPropEnumDefault(node, "mode", virDomainHyperVModeTypeFromString,
> +                              VIR_XML_PROP_NONZERO, &mode,
> +                              VIR_DOMAIN_HYPERV_MODE_CUSTOM) < 0)
> +        return -1;
> +
> +    def->features[VIR_DOMAIN_FEATURE_HYPERV] = mode;
>  
>      node = xmlFirstElementChild(node);
>      while (node != NULL) {
> @@ -21703,7 +21710,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDef *src,
>      }
>  
>      /* hyperv */
> -    if (src->features[VIR_DOMAIN_FEATURE_HYPERV] == VIR_TRISTATE_SWITCH_ON) {
> +    if (src->features[VIR_DOMAIN_FEATURE_HYPERV] != VIR_DOMAIN_HYPERV_MODE_NONE) {
>          for (i = 0; i < VIR_DOMAIN_HYPERV_LAST; i++) {
>              switch ((virDomainHyperv) i) {
>              case VIR_DOMAIN_HYPERV_RELAXED:

This change is not right. It is silently allowing the mode to be
changed, which certainly affects ABI stability. It needs to
validate src->features[VIR_DOMAIN_FEATURE_HYPERV] ==
dst->features[VIR_DOMAIN_FEATURE_HYPERV]


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list