diff options
author | Stefano Stabellini <stefano.stabellini@eu.citrix.com> | 2011-08-31 15:23:49 +0100 |
---|---|---|
committer | Stefano Stabellini <stefano.stabellini@eu.citrix.com> | 2011-08-31 15:23:49 +0100 |
commit | 1aa9c4f626dd81fc00f95c2ab7303c379768ba3a (patch) | |
tree | affaa862024c27b925e615f7eb62c08409e62727 /xen/arch/x86/irq.c | |
parent | a7ffe0fdecc06a1518622e2774b3567fa78f378b (diff) | |
download | xen-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.c | 6 |
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; |