mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
platform: finally disallow IRQ0 in platform_get_irq() and its ilk
The commita85a6c86c2
("driver core: platform: Clarify that IRQ 0 is invalid") only calls WARN() when IRQ0 is about to be returned, however using IRQ0 is considered invalid (according to Linus) outside the arch/ code where it's used by the i8253 drivers. Many driver subsystems treat 0 specially (e.g. as an indication of the polling mode by libata), so the users of platform_get_irq[_byname]() in them would have to filter out IRQ0 explicitly and this (quite obviously) doesn't scale... Let's finally get this straight and return -EINVAL instead of IRQ0! Fixes:a85a6c86c2
("driver core: platform: Clarify that IRQ 0 is invalid") Acked-by: Marc Zyngier <maz@kernel.org> Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru> Link: https://lore.kernel.org/r/025679e1-1f0a-ae4b-4369-01164f691511@omp.ru Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a72b6dff40
commit
ce753ad154
1 changed files with 4 additions and 2 deletions
|
@ -231,7 +231,8 @@ int platform_get_irq_optional(struct platform_device *dev, unsigned int num)
|
||||||
out_not_found:
|
out_not_found:
|
||||||
ret = -ENXIO;
|
ret = -ENXIO;
|
||||||
out:
|
out:
|
||||||
WARN(ret == 0, "0 is an invalid IRQ number\n");
|
if (WARN(!ret, "0 is an invalid IRQ number\n"))
|
||||||
|
return -EINVAL;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(platform_get_irq_optional);
|
EXPORT_SYMBOL_GPL(platform_get_irq_optional);
|
||||||
|
@ -446,7 +447,8 @@ static int __platform_get_irq_byname(struct platform_device *dev,
|
||||||
|
|
||||||
r = platform_get_resource_byname(dev, IORESOURCE_IRQ, name);
|
r = platform_get_resource_byname(dev, IORESOURCE_IRQ, name);
|
||||||
if (r) {
|
if (r) {
|
||||||
WARN(r->start == 0, "0 is an invalid IRQ number\n");
|
if (WARN(!r->start, "0 is an invalid IRQ number\n"))
|
||||||
|
return -EINVAL;
|
||||||
return r->start;
|
return r->start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue