> On Feb 21, 2022, at 10:57 AM, Stefan Hajnoczi <stefa...@redhat.com> wrote:
> 
> On Thu, Feb 17, 2022 at 02:48:56AM -0500, Jagannathan Raman wrote:
>> @@ -221,6 +272,14 @@ static void vfu_object_finalize(Object *obj)
>> 
>>     o->device = NULL;
>> 
>> +    if (o->unplug_blocker && o->pci_dev) {
>> +        qdev_del_unplug_blocker(DEVICE(o->pci_dev), o->unplug_blocker);
>> +        error_free(o->unplug_blocker);
>> +        o->unplug_blocker = NULL;
>> +    }
>> +
>> +    o->pci_dev = NULL;
> 
> Since we don't hold a reference to o->pci_dev there is an assumption
> about the order of --object vs --device ->finalize() here. I think it
> will work because softmmu/runstate.c:qemu_cleanup() doesn't unref
> main_system_bus and only --object ->finalize() is called, but this seems
> fragile. We should probably hold a reference to pci_dev and call
> object_unref() on it.

OK, will do.

Thank you!
--
Jag


Reply via email to