All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] generic: Add the exception case checking routine for ppi interrupt
@ 2016-08-30  4:17 ` MaJun
  0 siblings, 0 replies; 23+ messages in thread
From: MaJun @ 2016-08-30  4:17 UTC (permalink / raw)
  To: linux-kernel, linux-arm-kernel, marc.zyngier, tglx, dingtianhong,
	guohanjun, majun258

From: Ma Jun <majun258@huawei.com>

During system booting, if the interrupt which has no action registered
is triggered, it would cause system panic when try to access the
action member.

Signed-off-by: Ma Jun <majun258@huawei.com>
---
 kernel/irq/chip.c |   20 ++++++++++++++++----
 1 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 8114d06..9a0e872 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -766,11 +766,23 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
  */
 void handle_percpu_devid_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_desc_get_chip(desc);
-	struct irqaction *action = desc->action;
-	void *dev_id = raw_cpu_ptr(action->percpu_dev_id);
+	struct irq_chip *chip = NULL;
+	struct irqaction *action;
+	void *dev_id;
 	irqreturn_t res;
 
+	action = desc->action;
+
+	/* Unexpected interrupt in some execption case
+	 * we just send eoi to end this interrupt
+	 */
+	if (unlikely(!action)) {
+		mask_irq(desc);
+		goto out;
+	}
+	dev_id = raw_cpu_ptr(action->percpu_dev_id);
+
+	chip = irq_desc_get_chip(desc);
 	kstat_incr_irqs_this_cpu(irq, desc);
 
 	if (chip->irq_ack)
@@ -779,7 +791,7 @@ void handle_percpu_devid_irq(unsigned int irq, struct irq_desc *desc)
 	trace_irq_handler_entry(irq, action);
 	res = action->handler(irq, dev_id);
 	trace_irq_handler_exit(irq, action, res);
-
+out:
 	if (chip->irq_eoi)
 		chip->irq_eoi(&desc->irq_data);
 }
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2016-09-02 16:13 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-30  4:17 [PATCH] generic: Add the exception case checking routine for ppi interrupt MaJun
2016-08-30  4:17 ` MaJun
2016-08-30  8:50 ` Marc Zyngier
2016-08-30  8:50   ` Marc Zyngier
2016-08-30 10:35   ` majun (F)
2016-08-30 10:35     ` majun (F)
2016-08-30 11:07     ` Marc Zyngier
2016-08-30 11:07       ` Marc Zyngier
2016-08-30 11:21       ` Mark Rutland
2016-08-30 11:21         ` Mark Rutland
2016-08-31  6:35         ` majun (F)
2016-08-31  6:35           ` majun (F)
2016-08-31  8:35           ` Marc Zyngier
2016-08-31  8:35             ` Marc Zyngier
2016-09-01  8:15             ` majun (F)
2016-09-01  8:15               ` majun (F)
2016-09-01  9:03               ` Marc Zyngier
2016-09-01  9:03                 ` Marc Zyngier
2016-09-02 13:08                 ` Thomas Gleixner
2016-09-02 13:08                   ` Thomas Gleixner
2016-09-02 15:49                   ` Marc Zyngier
2016-09-02 15:49                     ` Marc Zyngier
2016-09-02 16:13                   ` [tip:irq/core] genirq: Robustify handle_percpu_devid_irq() tip-bot for Thomas Gleixner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.