aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/event_channel.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-09-15 08:18:53 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-09-15 08:18:53 +0100
commitc87dafbd403f8d44dad5f9eccedc64033596bdbf (patch)
treecd7e6d08e2556e3ade337c111c083a779ca09187 /xen/common/event_channel.c
parentd193f667ea025803917d5bfe17b492612d1a1ee9 (diff)
downloadxen-c87dafbd403f8d44dad5f9eccedc64033596bdbf.tar.gz
xen-c87dafbd403f8d44dad5f9eccedc64033596bdbf.tar.bz2
xen-c87dafbd403f8d44dad5f9eccedc64033596bdbf.zip
notify_via_xen_event_channel() should check for dying domain.
Else we can fail on either ASSERTion in that function. From: Olaf Hering <olaf@aepfle.de> Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/common/event_channel.c')
-rw-r--r--xen/common/event_channel.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c
index c6241d0598..f4a2c24d7a 100644
--- a/xen/common/event_channel.c
+++ b/xen/common/event_channel.c
@@ -1030,6 +1030,12 @@ void notify_via_xen_event_channel(struct domain *ld, int lport)
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);