]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
libxl: add validation if sound device is supported
authorMarek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Tue, 20 Dec 2022 22:52:05 +0000 (23:52 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 21 Dec 2022 09:00:52 +0000 (10:00 +0100)
Xen supports only subset of libvirt's sound devices, and starting with
Xen 4.17 it is enforced by libxl. Verify it early.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/libxl/libxl_domain.c

index 2d5325089507001e3972213efeb1593b962cb2ba..66a82ca317481498201ae9a3127458e67d992ee9 100644 (file)
@@ -312,6 +312,28 @@ libxlDomainDefValidate(const virDomainDef *def,
         return -1;
     }
 
+    if (def->nsounds > 0) {
+        virDomainSoundDef *snd = def->sounds[0];
+
+        switch (snd->model) {
+            case VIR_DOMAIN_SOUND_MODEL_ICH6:
+            case VIR_DOMAIN_SOUND_MODEL_ES1370:
+            case VIR_DOMAIN_SOUND_MODEL_AC97:
+            case VIR_DOMAIN_SOUND_MODEL_SB16:
+                break;
+            default:
+            case VIR_DOMAIN_SOUND_MODEL_PCSPK:
+            case VIR_DOMAIN_SOUND_MODEL_ICH7:
+            case VIR_DOMAIN_SOUND_MODEL_USB:
+            case VIR_DOMAIN_SOUND_MODEL_ICH9:
+            case VIR_DOMAIN_SOUND_MODEL_LAST:
+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                        _("unsupported audio model %s"),
+                        virDomainSoundModelTypeToString(snd->model));
+                return -1;
+        }
+    }
+
     return 0;
 }