diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-09-15 08:18:53 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-09-15 08:18:53 +0100 |
commit | c87dafbd403f8d44dad5f9eccedc64033596bdbf (patch) | |
tree | cd7e6d08e2556e3ade337c111c083a779ca09187 /xen/common/event_channel.c | |
parent | d193f667ea025803917d5bfe17b492612d1a1ee9 (diff) | |
download | xen-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.c | 6 |
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); |