This is a second attempt to fix the crash reported by Thomas[1].
This keeps the compat property array simple, different from my
first attempt[2].
This also avoids extra complexity on the device code: we don't
need interface name, inheritance tricks, or devices overriding a
compat property after the fact. The simple absence of the QOM
properties on some device types is enough to make the compat code
skip them.
While working on the fix, I stumbled upon another minor bug in
object_apply_global_props(), which I fixed in patch 1/3.
This series is based on my machine-next branch, because of
conflicts with compat property array cleanups that are already
queued.
[1] http://mid.mail-archive.com/a28d196a-e2fe-a013-a6e2-99ac260f6279@redhat.com
[2] http://mid.mail-archive.com/20190104032226.21428-1-ehabkost@redhat.com
Eduardo Habkost (3):
qom: Don't keep error value between object_property_parse() calls
globals: Allow global properties to be optional
virtio: Make disable-legacy/disable-modern compat properties optional
include/hw/qdev-core.h | 3 +++
hw/core/machine.c | 5 +++--
qom/object.c | 6 ++++--
3 files changed, 10 insertions(+), 4 deletions(-)
--
2.18.0.rc1.1.g3f1ff2140