iommu: Don't crash if machine is not PC_MACHINE
commitef0e8fc768a561dd13a86420b3268f6f3d5d0621
authorEduardo Habkost <ehabkost@redhat.com>
Mon, 8 May 2017 20:08:12 +0000 (8 17:08 -0300)
committerMichael S. Tsirkin <mst@redhat.com>
Wed, 10 May 2017 19:04:23 +0000 (10 22:04 +0300)
treefcaf07919181da1a98c28b4af0c4ecb3ab43a696
parent465238d9f873a6251223db1669aa4766822a8783
iommu: Don't crash if machine is not PC_MACHINE

Currently it's possible to crash QEMU using "-device *-iommu" and
"-machine none":

  $ qemu-system-x86_64 -machine none -device amd-iommu
  qemu/hw/i386/amd_iommu.c:1140:amdvi_realize: Object 0x55627dafbc90 is not an instance of type generic-pc-machine
  Aborted (core dumped)
  $ qemu-system-x86_64 -machine none -device intel-iommu
  qemu/hw/i386/intel_iommu.c:2972:vtd_realize: Object 0x56292ec0bc90 is not an instance of type generic-pc-machine
  Aborted (core dumped)

Fix amd-iommu and intel-iommu to ensure the current machine is really a
TYPE_PC_MACHINE instance at their realize methods.

Resulting error messages:

  $ qemu-system-x86_64 -machine none -device amd-iommu
  qemu-system-x86_64: -device amd-iommu: Machine-type 'none' not supported by amd-iommu
  $ qemu-system-x86_64 -machine none -device intel-iommu
  qemu-system-x86_64: -device intel-iommu: Machine-type 'none' not supported by intel-iommu

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/i386/amd_iommu.c
hw/i386/intel_iommu.c