From: Wang Chen Date: Mon, 29 Dec 2008 05:35:11 +0000 (+0800) Subject: genirq: check chip->ack before calling X-Git-Tag: v2.6.30-rc1~3^2~10^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=efdc64f0c792ea744bcc9203f35b908e66d42f41;p=profile%2Fivi%2Fkernel-adaptation-intel-automotive.git genirq: check chip->ack before calling Impact: fix theoretical NULL dereference The generic irq layer doesn't know whether irq_chip has ack routine on some architectures or not. Upon that, before calling chip->ack, we should check that it's not NULL. Signed-off-by: Wang Chen Signed-off-by: Ingo Molnar --- diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 6eb3c79..0ad02d7 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -290,7 +290,8 @@ static inline void mask_ack_irq(struct irq_desc *desc, int irq) desc->chip->mask_ack(irq); else { desc->chip->mask(irq); - desc->chip->ack(irq); + if (desc->chip->ack) + desc->chip->ack(irq); } } @@ -475,7 +476,8 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc) kstat_incr_irqs_this_cpu(irq, desc); /* Start handling the irq */ - desc->chip->ack(irq); + if (desc->chip->ack) + desc->chip->ack(irq); desc = irq_remap_to_desc(irq, desc); /* Mark the IRQ currently in progress.*/