diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-12-24 12:14:09 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-12-24 12:14:09 +0000 |
commit | 27062e851f0ac848d4ec5f2dc939bfad8e93082b (patch) | |
tree | 70676dc44761d9ece1d4574699cf0f2f42ca5668 /xen/common/event_channel.c | |
parent | 37fddaa5fe1a7e369827e4b9e25cdae5df9b3d7d (diff) | |
download | xen-27062e851f0ac848d4ec5f2dc939bfad8e93082b.tar.gz xen-27062e851f0ac848d4ec5f2dc939bfad8e93082b.tar.bz2 xen-27062e851f0ac848d4ec5f2dc939bfad8e93082b.zip |
evtchn: Do not free d->poll_mask until domain is being deallocated.
Avoids crash on dereference of poll_mask after domain_kill().
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 | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index d052f15980..29c515cf0c 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -1052,13 +1052,18 @@ void evtchn_destroy(struct domain *d) d->evtchn[i] = NULL; } spin_unlock(&d->event_lock); +} + +void evtchn_destroy_final(struct domain *d) +{ #if MAX_VIRT_CPUS > BITS_PER_LONG xfree(d->poll_mask); d->poll_mask = NULL; #endif } + static void domain_dump_evtchn_info(struct domain *d) { unsigned int port; |