diff options
| author | Jan Beulich <jbeulich@suse.com> | 2013-05-23 10:09:17 +0200 |
|---|---|---|
| committer | Jan Beulich <jbeulich@suse.com> | 2013-05-23 10:09:17 +0200 |
| commit | 0cda713442ada58aa2242d1df6af6b4fe925d212 (patch) | |
| tree | a9fc3537340cf43bf8ba1ae15ca3c88ae8385009 /tools/lib/sys_string.h | |
| parent | 0b05309aa78ef834ece1b27866be279c9e184572 (diff) | |
| download | xen-0cda713442ada58aa2242d1df6af6b4fe925d212.tar.gz xen-0cda713442ada58aa2242d1df6af6b4fe925d212.tar.bz2 xen-0cda713442ada58aa2242d1df6af6b4fe925d212.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>
master commit: 30256a0ff17f6f3b1278b85103187341d5b0ac42
master date: 2013-05-15 10:52:02 +0200
Diffstat (limited to 'tools/lib/sys_string.h')
0 files changed, 0 insertions, 0 deletions
