Message ID | 1485531620-121182-2-git-send-email-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
On 01/27/2017 12:40 PM, Paolo Bonzini wrote: > Make it easy to unregister a MemoryListener without tracking whether it > had been registered before. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > 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) >
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)
Make it easy to unregister a MemoryListener without tracking whether it had been registered before. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- v3: new memory.c | 5 +++++ 1 file changed, 5 insertions(+)