Hi,
> +static void usb_ohci_exit(PCIDevice *dev)
> +{
> + OHCIPCIState *ohci = PCI_OHCI(dev);
> + OHCIState *s = &ohci->state;
> +
> + memory_region_destroy(&s->mem);
> +
> + if (!ohci->masterbus) {
> + usb_bus_release(&s->bus);
> + }
> +}
This is incomplete. At minimum you have to care about s->eof_timer.
Same goes for the other host adapters. There can be timers running and
there might be in-flight usb requests which must be property teared
down, to make sure we don't use-after-free hostadapter state in
callbacks.
cheers,
Gerd