mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 12:44:11 +08: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
@ -231,7 +231,8 @@ int platform_get_irq_optional(struct platform_device *dev, unsigned int num)
|
||||
out_not_found:
|
||||
ret = -ENXIO;
|
||||
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;
|
||||
}
|
||||
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);
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user