diff options
Diffstat (limited to 'arch/x86/kernel/apic')
-rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index a097a773bc76..0d0401802d4f 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
@@ -410,13 +410,10 @@ static bool io_apic_level_ack_pending(struct irq_cfg *cfg) | |||
410 | unsigned long flags; | 410 | unsigned long flags; |
411 | 411 | ||
412 | spin_lock_irqsave(&ioapic_lock, flags); | 412 | spin_lock_irqsave(&ioapic_lock, flags); |
413 | entry = cfg->irq_2_pin; | 413 | for (entry = cfg->irq_2_pin; entry != NULL; entry = entry->next) { |
414 | for (;;) { | ||
415 | unsigned int reg; | 414 | unsigned int reg; |
416 | int pin; | 415 | int pin; |
417 | 416 | ||
418 | if (!entry) | ||
419 | break; | ||
420 | pin = entry->pin; | 417 | pin = entry->pin; |
421 | reg = io_apic_read(entry->apic, 0x10 + pin*2); | 418 | reg = io_apic_read(entry->apic, 0x10 + pin*2); |
422 | /* Is the remote IRR bit set? */ | 419 | /* Is the remote IRR bit set? */ |
@@ -424,9 +421,6 @@ static bool io_apic_level_ack_pending(struct irq_cfg *cfg) | |||
424 | spin_unlock_irqrestore(&ioapic_lock, flags); | 421 | spin_unlock_irqrestore(&ioapic_lock, flags); |
425 | return true; | 422 | return true; |
426 | } | 423 | } |
427 | if (!entry->next) | ||
428 | break; | ||
429 | entry = entry->next; | ||
430 | } | 424 | } |
431 | spin_unlock_irqrestore(&ioapic_lock, flags); | 425 | spin_unlock_irqrestore(&ioapic_lock, flags); |
432 | 426 | ||