[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 1 6/8] xen/pt: Make xen_pt_unregister_device idempotent
> > @@ -858,15 +863,20 @@ static void xen_pt_unregister_device(PCIDevice *d) > > machine_irq, errno); > > } > > } > > + s->machine_irq = 0; > > } > > > > /* delete all emulated config registers */ > > xen_pt_config_delete(s); > > > > - memory_listener_unregister(&s->memory_listener); > > - memory_listener_unregister(&s->io_listener); > > - > > - xen_host_pci_device_put(&s->real_device); > > + if (s->listener_set) { > > + memory_listener_unregister(&s->memory_listener); > > + memory_listener_unregister(&s->io_listener); > > + s->listener_set = false; > > If you call QTAILQ_INIT on memory_listener and io_listener, then you > simply check on QTAILQ_EMPTY and remove listener_set. No dice. For that to work they need to be QTAIL_HEAD while they are of QTAILQ_ENTRY. That is, the include/exec/memory.h: struct MemoryListener { ... AddressSpace *address_space_filter; QTAILQ_ENTRY(MemoryListener) link; } And the QTAILQ_EMPTY checks for '>tqh_first' while the QTAILQ_ENTRY only defines two pointers: tqe_next and tqe_prev. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |