Message ID | 20230803113121.77273-1-wangzhu9@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [-next,v2] usb: musb: Do not check 0 for platform_get_irq_byname() | expand |
On 8/3/23 2:31 PM, Zhu Wang wrote: > When platform_get_irq_byname() is called to get a interrupt number, it > may return -EINVAL or -ENXIO when failed, while current code returned You still don't mention -EPROBE_DEFER. Propagating it upstream is the _main_ reason we must not override what platform_get_irq_byname() returns! > -ENODEV, so we replace it with the return value of > platform_get_irq_byname(). And we found that platform_get_irq_byname() > never returned zero by reading its code. It used to return 0 (as both IRQ0 and the error indication). Historically, there were several patches fixing the inconsistencies... > Commit ce753ad1549c ("platform: finally disallow IRQ0 in > platform_get_irq() and its ilk") makes sure IRQ0 is not returned. > > Signed-off-by: Zhu Wang <wangzhu9@huawei.com> > > --- > Changes in v2: > - Update the commit message, present the reason of replacing the return > value of the probe. > --- > drivers/usb/musb/musb_core.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c > index ecbd3784bec3..b24adb5b399f 100644 > --- a/drivers/usb/musb/musb_core.c > +++ b/drivers/usb/musb/musb_core.c > @@ -2610,8 +2610,8 @@ static int musb_probe(struct platform_device *pdev) > int irq = platform_get_irq_byname(pdev, "mc"); > void __iomem *base; > > - if (irq <= 0) > - return -ENODEV; > + if (irq < 0) > + return irq; > > base = devm_platform_ioremap_resource(pdev, 0); > if (IS_ERR(base)) >
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index ecbd3784bec3..b24adb5b399f 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -2610,8 +2610,8 @@ static int musb_probe(struct platform_device *pdev) int irq = platform_get_irq_byname(pdev, "mc"); void __iomem *base; - if (irq <= 0) - return -ENODEV; + if (irq < 0) + return irq; base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(base))
When platform_get_irq_byname() is called to get a interrupt number, it may return -EINVAL or -ENXIO when failed, while current code returned -ENODEV, so we replace it with the return value of platform_get_irq_byname(). And we found that platform_get_irq_byname() never returned zero by reading its code. Commit ce753ad1549c ("platform: finally disallow IRQ0 in platform_get_irq() and its ilk") makes sure IRQ0 is not returned. Signed-off-by: Zhu Wang <wangzhu9@huawei.com> --- Changes in v2: - Update the commit message, present the reason of replacing the return value of the probe. --- drivers/usb/musb/musb_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)