[libvirt] [PATCH 5/6] Remove the event namespace concept
Cedric Bosdonnat
cbosdonnat at suse.com
Thu Dec 12 15:39:40 UTC 2013
On Wed, 2013-12-11 at 15:28 +0000, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
...
> @@ -633,22 +640,17 @@ virObjectEventStateDispatchFunc(virConnectPtr conn,
> void *opaque)
> {
> virObjectEventStatePtr state = opaque;
> - virEventNamespaceID namespace = (event->eventID & 0xFF00) >> 8;
>
> /* Drop the lock whle dispatching, for sake of re-entrancy */
> virObjectEventStateUnlock(state);
> - switch (namespace) {
> - case VIR_EVENT_NAMESPACE_DOMAIN:
> + if (virObjectIsClass(event, virDomainEventGetBaseClass()))
> virDomainEventDispatchDefaultFunc(conn, event,
> VIR_DOMAIN_EVENT_CALLBACK(cb), cbopaque, NULL);
> - break;
> - case VIR_EVENT_NAMESPACE_NETWORK:
> + else if (virObjectIsClass(event, virNetworkEventGetBaseClass()))
> virNetworkEventDispatchDefaultFunc(conn, event,
> VIR_NETWORK_EVENT_CALLBACK(cb), cbopaque, NULL);
> - break;
> - default:
> + else
> VIR_ERROR(_("Unknown event namespace to dispatch"));
> - }
> virObjectEventStateLock(state);
> }
In this function we may get a crash if we have network event callback
registered but nothing registered for domain events. Indeed, in such a
case the virDomainEventGetBaseClass() would return NULL and we'll have a
crash when checking the inheritance.
This is why I see a crash with the patched virt-manager, and not with
the event-test.
--
Cedric
More information about the libvir-list
mailing list