aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/irq.c
diff options
context:
space:
mode:
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>2011-08-31 15:23:49 +0100
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>2011-08-31 15:23:49 +0100
commit1aa9c4f626dd81fc00f95c2ab7303c379768ba3a (patch)
treeaffaa862024c27b925e615f7eb62c08409e62727 /xen/arch/x86/irq.c
parenta7ffe0fdecc06a1518622e2774b3567fa78f378b (diff)
downloadxen-1aa9c4f626dd81fc00f95c2ab7303c379768ba3a.tar.gz
xen-1aa9c4f626dd81fc00f95c2ab7303c379768ba3a.tar.bz2
xen-1aa9c4f626dd81fc00f95c2ab7303c379768ba3a.zip
xen: get_free_pirq: make sure that the returned pirq is allocated
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Diffstat (limited to 'xen/arch/x86/irq.c')
-rw-r--r--xen/arch/x86/irq.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
index 4d0c590687..9518d60087 100644
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -1587,13 +1587,19 @@ int get_free_pirq(struct domain *d, int type, int index)
{
for ( i = 16; i < nr_irqs_gsi; i++ )
if ( is_free_pirq(d, pirq_info(d, i)) )
+ {
+ pirq_get_info(d, i);
return i;
+ }
}
else
{
for ( i = d->nr_pirqs - 1; i >= nr_irqs_gsi; i-- )
if ( is_free_pirq(d, pirq_info(d, i)) )
+ {
+ pirq_get_info(d, i);
return i;
+ }
}
return -ENOSPC;