diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index 827ed556d3..98654ba784 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -2287,6 +2287,7 @@ int map_domain_pirq( set_domain_irq_pirq(d, irq, info); spin_unlock_irqrestore(&desc->lock, flags); + desc = NULL; info = NULL; irq = create_irq(NUMA_NO_NODE, true); @@ -2322,7 +2323,9 @@ int map_domain_pirq( if ( ret ) { - spin_unlock_irqrestore(&desc->lock, flags); + if ( desc ) + spin_unlock_irqrestore(&desc->lock, flags); + pci_disable_msi(msi_desc); if ( nr ) {