[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 0/1] vfio-pci: fix assert fail in host property if u

From: Daniel Oram
Subject: [Qemu-devel] [PATCH 0/1] vfio-pci: fix assert fail in host property if unused
Date: Wed, 9 Nov 2016 18:36:19 +0000

Commit 4a946268 changed the default value of the structure 
(PCIHostDeviceAddress) underlying the host property in vfio-pci to be ~0 in all 
fields. Since this structure has excess bits for representing a standard BDF 
(FFFF:FF:FF.F) this triggers an assert check designed to catch such invalid 
BDFs in the get function of the property. This makes any code that attempts to 
use get on the property fatal if the host device isn't specified using the now 
optional host property.

To see the bug assign a vfio-pci device using the sysfsdev property instead of 
the host property so that host gets the default "not present," value. Attempts 
to display the property then crash the working emulation.

qemu-system-x86_64 -device 
vfio-pci,id=gfxfn0,sysfsdev='/sys/bus/pci/devices/0000:01:00.0' -monitor stdio

QEMU 2.7.50 monitor - type 'help' for more information
(qemu) info qtree
bus: main-system-bus
....Omitted for brevity...
    bus: pci.0
      type PCI
      dev: vfio-pci, id "gfxfn0"
qemu-system-x86_64: /home/xochip/source/qemu.git/hw/core/qdev-properties.c:717: 
get_pci_host_devaddr: Assertion `rc == sizeof(buffer) - 1' failed.

The bug is minor because the structure involved is presumably insufficient and 
redundant given the introduction of the new sysfsdev property. Since I'm new to 
the code, I resisted the urge to make a mess by cleaning it up and attach a 
totally minimal fix in the hope it makes the problem clearer and easier to 
ignore. Happy to redo or leave it to somebody else as required.



Daniel Oram (1):
  Fix assert when get default PCI address property used by vfio-pci

 hw/core/qdev-properties.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]