| From dfaf820a13ec160f06556e08dab423818ba87f14 Mon Sep 17 00:00:00 2001 |
| From: Axel Lin <axel.lin@ingics.com> |
| Date: Mon, 6 May 2013 17:03:32 +0800 |
| Subject: irqchip: renesas-irqc: Fix irqc_probe error handling |
| |
| From: Axel Lin <axel.lin@ingics.com> |
| |
| commit dfaf820a13ec160f06556e08dab423818ba87f14 upstream. |
| |
| The code in goto err3 path is wrong because it will call fee_irq() with k == 0, |
| which means it does free_irq(p->irq[-1].requested_irq, &p->irq[-1]); |
| |
| Signed-off-by: Axel Lin <axel.lin@ingics.com> |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/irqchip/irq-renesas-irqc.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/irqchip/irq-renesas-irqc.c |
| +++ b/drivers/irqchip/irq-renesas-irqc.c |
| @@ -248,8 +248,8 @@ static int irqc_probe(struct platform_de |
| |
| return 0; |
| err3: |
| - for (; k >= 0; k--) |
| - free_irq(p->irq[k - 1].requested_irq, &p->irq[k - 1]); |
| + while (--k >= 0) |
| + free_irq(p->irq[k].requested_irq, &p->irq[k]); |
| |
| irq_domain_remove(p->irq_domain); |
| err2: |