diff options
Diffstat (limited to 'arch/ia64/kernel/iosapic.c')
-rw-r--r-- | arch/ia64/kernel/iosapic.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index 5f6d98e866ea..cfe4654838f4 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
@@ -794,8 +794,9 @@ iosapic_register_intr (unsigned int gsi, | |||
794 | err = register_intr(gsi, irq, IOSAPIC_LOWEST_PRIORITY, | 794 | err = register_intr(gsi, irq, IOSAPIC_LOWEST_PRIORITY, |
795 | polarity, trigger); | 795 | polarity, trigger); |
796 | if (err < 0) { | 796 | if (err < 0) { |
797 | spin_unlock(&irq_desc[irq].lock); | ||
797 | irq = err; | 798 | irq = err; |
798 | goto unlock_all; | 799 | goto unlock_iosapic_lock; |
799 | } | 800 | } |
800 | 801 | ||
801 | /* | 802 | /* |
@@ -811,7 +812,7 @@ iosapic_register_intr (unsigned int gsi, | |||
811 | gsi, (trigger == IOSAPIC_EDGE ? "edge" : "level"), | 812 | gsi, (trigger == IOSAPIC_EDGE ? "edge" : "level"), |
812 | (polarity == IOSAPIC_POL_HIGH ? "high" : "low"), | 813 | (polarity == IOSAPIC_POL_HIGH ? "high" : "low"), |
813 | cpu_logical_id(dest), dest, irq_to_vector(irq)); | 814 | cpu_logical_id(dest), dest, irq_to_vector(irq)); |
814 | unlock_all: | 815 | |
815 | spin_unlock(&irq_desc[irq].lock); | 816 | spin_unlock(&irq_desc[irq].lock); |
816 | unlock_iosapic_lock: | 817 | unlock_iosapic_lock: |
817 | spin_unlock_irqrestore(&iosapic_lock, flags); | 818 | spin_unlock_irqrestore(&iosapic_lock, flags); |