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] a28d196a-e2fe-a013-a6e2-99ac260f6279@redhat.com">http://mid.mail-archive.com/a28d196a-e2fe-a013-a6e2-99ac260f6279@redhat.com [2] 20190104032226.21428-1-ehabkost@redhat.com">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