--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -524,6 +524,9 @@ handle_percpu_irq(unsigned int irq, stru
 
 	kstat_incr_irqs_this_cpu(irq, desc);
 
+	if (unlikely(!desc->action || (desc->status & IRQ_DISABLED)))
+		return;
+
 	if (desc->chip->ack)
 		desc->chip->ack(irq);