
On 07/26/2018 03:27 AM, Han Han wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=1591151
Add function virDomainInputDefValidate to validate input devices. Make sure evdev attribute of source element is not used by mouse, keyboard, and tablet input device.
Signed-off-by: Han Han <hhan@redhat.com> --- src/conf/domain_conf.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-)
FYI: For a single patch series, no need to create a --cover-letter
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 178c6d2711..a65b53b70c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5723,6 +5723,24 @@ virDomainVsockDefValidate(const virDomainVsockDef *vsock) return 0; }
+static int +virDomainInputDefValidate(const virDomainInputDef *input) +{ + switch (input->type) {
So you missed the part where I said like virDomainInputDefGetPath... This should be switch ((virDomainInputType) input->type)
+ case VIR_DOMAIN_INPUT_TYPE_MOUSE: + case VIR_DOMAIN_INPUT_TYPE_TABLET: + case VIR_DOMAIN_INPUT_TYPE_KBD: + if (input->source.evdev) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("setting source evdev path only supported for " + "passthrough input devices")); + return -1; + }
Thus necessitating cases for: case VIR_DOMAIN_INPUT_TYPE_LAST: (int the above failure pile) and case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: break; I have fixed this and pushed with my Reviewed-by: John Ferlan <jferlan@redhat.com> John
+ } + + return 0; +} +
static int virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, @@ -5762,9 +5780,11 @@ virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, case VIR_DOMAIN_DEVICE_VSOCK: return virDomainVsockDefValidate(dev->data.vsock);
+ case VIR_DOMAIN_DEVICE_INPUT: + return virDomainInputDefValidate(dev->data.input); + case VIR_DOMAIN_DEVICE_LEASE: case VIR_DOMAIN_DEVICE_FS: - case VIR_DOMAIN_DEVICE_INPUT: case VIR_DOMAIN_DEVICE_SOUND: case VIR_DOMAIN_DEVICE_WATCHDOG: case VIR_DOMAIN_DEVICE_GRAPHICS: