[libvirt] [PATCH] audit: Enforce enum switch type cast in virDomainAuditHostdev
Michal Privoznik
mprivozn at redhat.com
Thu May 31 08:16:41 UTC 2018
On 05/31/2018 10:05 AM, Erik Skultety wrote:
> There was a missing enum for mdev causing a strange 'unknown device type'
> warning when hot-plugging mdev.
>
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1583927
>
> Signed-off-by: Erik Skultety <eskultet at redhat.com>
> ---
> src/conf/domain_audit.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c
> index 82868bca76..14138d93af 100644
> --- a/src/conf/domain_audit.c
> +++ b/src/conf/domain_audit.c
> @@ -361,6 +361,7 @@ virDomainAuditHostdev(virDomainObjPtr vm, virDomainHostdevDefPtr hostdev,
> virDomainHostdevSubsysPCIPtr pcisrc = &hostdev->source.subsys.u.pci;
> virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi;
> virDomainHostdevSubsysSCSIVHostPtr hostsrc = &hostdev->source.subsys.u.scsi_host;
> + virDomainHostdevSubsysMediatedDevPtr mdevsrc = &hostdev->source.subsys.u.mdev;
>
> virUUIDFormat(vm->def->uuid, uuidstr);
> if (!(vmname = virAuditEncode("vm", vm->def->name))) {
> @@ -373,9 +374,9 @@ virDomainAuditHostdev(virDomainObjPtr vm, virDomainHostdevDefPtr hostdev,
> virt = "?";
> }
>
> - switch (hostdev->mode) {
> + switch ((virDomainHostdevMode) hostdev->mode) {
> case VIR_DOMAIN_HOSTDEV_MODE_SUBSYS:
> - switch (hostdev->source.subsys.type) {
> + switch ((virDomainHostdevSubsysType) hostdev->source.subsys.type) {
1: ^^^
> case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
> if (virAsprintfQuiet(&address, "%.4x:%.2x:%.2x.%.1x",
> pcisrc->addr.domain,
> @@ -419,6 +420,13 @@ virDomainAuditHostdev(virDomainObjPtr vm, virDomainHostdevDefPtr hostdev,
> goto cleanup;
> }
> break;
> + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
> + if (VIR_STRDUP_QUIET(address, mdevsrc->uuidstr) < 0) {
> + VIR_WARN("OOM while enconding audit message");
> + goto cleanup;
> + }
> + break;
This makes sense.
> + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:> default:
But this does not. Well, in combination with [1] it doesn't. Firstly,
why do we even have "default" labels? Secondly, what's the point of
typecasting when we have "default" label? Same goes for the outer
switch(). I think we should remove "default" labels.
Michal
More information about the libvir-list
mailing list