Messages in this thread Patch in this message | | | From | Guenter Roeck <> | Subject | [PATCH] driver-core: platform: Catch errors from calls to irq_get_irq_data | Date | Tue, 13 Sep 2016 20:32:44 -0700 |
| |
irq_get_irq_data() can return NULL, which results in a nasty crash. Check its return value before passing it on to irqd_set_trigger_type().
Signed-off-by: Guenter Roeck <linux@roeck-us.net> --- drivers/base/platform.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 6482d47deb50..521c8ff28158 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -108,9 +108,14 @@ int platform_get_irq(struct platform_device *dev, unsigned int num) * IORESOURCE_BITS correspond 1-to-1 to the IRQF_TRIGGER* * settings. */ - if (r && r->flags & IORESOURCE_BITS) - irqd_set_trigger_type(irq_get_irq_data(r->start), - r->flags & IORESOURCE_BITS); + if (r && r->flags & IORESOURCE_BITS) { + struct irq_data *irqd; + + irqd = irq_get_irq_data(r->start); + if (!irqd) + return -ENXIO; + irqd_set_trigger_type(irqd, r->flags & IORESOURCE_BITS); + } return r ? r->start : -ENXIO; #endif -- 2.5.0
| |