diff options
author | Jan Beulich <jbeulich@suse.com> | 2013-05-15 10:52:02 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2013-05-15 10:52:02 +0200 |
commit | 30256a0ff17f6f3b1278b85103187341d5b0ac42 (patch) | |
tree | 55c6b09a799397c08e163a726f3b27ee1c473886 /xen/arch/x86/hvm/rtc.c | |
parent | 00dece7696c868de6ecb662da067adce814c41d2 (diff) | |
download | xen-30256a0ff17f6f3b1278b85103187341d5b0ac42.tar.gz xen-30256a0ff17f6f3b1278b85103187341d5b0ac42.tar.bz2 xen-30256a0ff17f6f3b1278b85103187341d5b0ac42.zip |
x86/IO-APIC: fix guest RTE write corner cases
This fixes two regressions from c/s 20143:a7de5bd776ca ("x86: Make the
hypercall PHYSDEVOP_alloc_irq_vector hypercall dummy"):
For one, IRQs that had their vector set up by Xen internally without a
handler ever having got set (e.g. via "com<n>=..." without a matching
consumer option like "console=com<n>") would wrongly call
add_pin_to_irq() here, triggering the BUG_ON() in that function.
Second, when assign_irq_vector() fails this addition to irq_2_pin[]
needs to be undone.
In the context of this I'm also surprised that the irq_2_pin[]
manipulations here occur without any lock, i.e. rely on Dom0 to do
some sort of serialization.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/hvm/rtc.c')
0 files changed, 0 insertions, 0 deletions