Make it easy to unregister a MemoryListener without tracking whether it had been registered before.
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- v3: new memory.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/memory.c b/memory.c index 2bfc37f..8fafd4c 100644 --- a/memory.c +++ b/memory.c @@ -2371,8 +2371,13 @@ void memory_listener_register(MemoryListener *listener, AddressSpace *as) void memory_listener_unregister(MemoryListener *listener) { + if (!listener->address_space) { + return; + } + QTAILQ_REMOVE(&memory_listeners, listener, link); QTAILQ_REMOVE(&listener->address_space->listeners, listener, link_as); + listener->address_space = NULL; } void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name) -- 1.8.3.1