Olaf Hering
2010-Sep-07 19:52 UTC
[Xen-devel] how to prevent crashes in notify_via_xen_event_channel during shutdown/crash
Hello, I''m seeing crashes with 4.0.1 in notify_via_xen_event_channel() after evtchn_destroy() was already executed, the ASSERT triggers. There are a few calls to notify_via_xen_event_channel(), only hvm_send_assist_req() seems to check the domain->is_shutting_down flag. xen-unstable is not much different in that area. How should a check for an already destroyed eventchannel look like? Maybe like its done in free_xen_event_channel()? Olaf _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Olaf Hering
2010-Sep-14 21:40 UTC
[Xen-devel] Re: how to prevent crashes in notify_via_xen_event_channel during shutdown/crash
On Tue, Sep 07, Olaf Hering wrote:> > Hello, > > I''m seeing crashes with 4.0.1 in notify_via_xen_event_channel() after > evtchn_destroy() was already executed, the ASSERT triggers. > There are a few calls to notify_via_xen_event_channel(), only > hvm_send_assist_req() seems to check the domain->is_shutting_down flag. > xen-unstable is not much different in that area. > > How should a check for an already destroyed eventchannel look like? > Maybe like its done in free_xen_event_channel()?This patch fixes the crashes for me. --- xen-4.0.1-testing.orig/xen/common/event_channel.c +++ xen-4.0.1-testing/xen/common/event_channel.c @@ -994,6 +994,12 @@ void notify_via_xen_event_channel(struct spin_lock(&ld->event_lock); + if ( unlikely(ld->is_dying) ) + { + spin_unlock(&ld->event_lock); + return; + } + ASSERT(port_is_valid(ld, lport)); lchn = evtchn_from_port(ld, lport); ASSERT(lchn->consumer_is_xen); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel