diff options
Diffstat (limited to 'kernel/irq/irqdomain.c')
| -rw-r--r-- | kernel/irq/irqdomain.c | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index 200ce832c58..1f9e26526b6 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -135,6 +135,9 @@ int irq_domain_simple_dt_translate(struct irq_domain *d,  		return -EINVAL;  	if (intsize < 1)  		return -EINVAL; +	if (d->nr_irq && ((intspec[0] < d->hwirq_base) || +	    (intspec[0] >= d->hwirq_base + d->nr_irq))) +		return -EINVAL;  	*out_hwirq = intspec[0];  	*out_type = IRQ_TYPE_NONE; @@ -143,11 +146,6 @@ int irq_domain_simple_dt_translate(struct irq_domain *d,  	return 0;  } -struct irq_domain_ops irq_domain_simple_ops = { -	.dt_translate = irq_domain_simple_dt_translate, -}; -EXPORT_SYMBOL_GPL(irq_domain_simple_ops); -  /**   * irq_domain_create_simple() - Set up a 'simple' translation range   */ @@ -182,3 +180,10 @@ void irq_domain_generate_simple(const struct of_device_id *match,  }  EXPORT_SYMBOL_GPL(irq_domain_generate_simple);  #endif /* CONFIG_OF_IRQ */ + +struct irq_domain_ops irq_domain_simple_ops = { +#ifdef CONFIG_OF_IRQ +	.dt_translate = irq_domain_simple_dt_translate, +#endif /* CONFIG_OF_IRQ */ +}; +EXPORT_SYMBOL_GPL(irq_domain_simple_ops);  |