Re: [PATCH] irq: fix crash due to op-less irq domains

From: Rob Herring
Date: Wed Dec 14 2011 - 17:15:01 EST


Linus,

On 12/14/2011 02:55 PM, Linus Walleij wrote:
> From: Linus Walleij <linus.walleij@xxxxxxxxxx>
>
> IRQ domains without ops does not work anymore after commit
> "irq: support domains with non-zero hwirq base", since the
> check dereferences domain->ops->to_irq without checking of
> domain->ops are NULL. This makes U300 (and probably most other
> systems using the PL190 VIC) boot again.

I thought the VIC series had the fix for this, but it seems not. NULL
ops is considered invalid based on the code comments. The correct fix is
this patch:

irqdomain: export irq_domain_simple_ops for !CONFIG_OF
http://www.spinics.net/lists/arm-kernel/msg150290.html

I believe this is going in with some iMX changes. But I guess the VIC is
going to need a fix to use irq_domain_simple_ops.

Rob

> Cc: Rob Herring <rob.herring@xxxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
> ---
> include/linux/irqdomain.h | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
> index 99834e58..78a1e66 100644
> --- a/include/linux/irqdomain.h
> +++ b/include/linux/irqdomain.h
> @@ -74,7 +74,7 @@ struct irq_domain {
> static inline unsigned int irq_domain_to_irq(struct irq_domain *d,
> unsigned long hwirq)
> {
> - if (d->ops->to_irq)
> + if (d->ops && d->ops->to_irq)
> return d->ops->to_irq(d, hwirq);
> if (WARN_ON(hwirq < d->hwirq_base))
> return 0;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/