drivers/mfd/intel-lpss.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
platform_get_irq() returns a negative error code to indicating an
error. So in intel_lpss_probe() the unset / erroneous IRQ should be
returned as is.
Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
Changelog:
v1 -> v2:
1. Update commit message
2. Fix IRQ check in intel_lpcc_probe()
---
drivers/mfd/intel-lpss.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/mfd/intel-lpss.c b/drivers/mfd/intel-lpss.c
index 9591b354072a..4c9d0222751a 100644
--- a/drivers/mfd/intel-lpss.c
+++ b/drivers/mfd/intel-lpss.c
@@ -378,9 +378,12 @@ int intel_lpss_probe(struct device *dev,
struct intel_lpss *lpss;
int ret;
- if (!info || !info->mem || info->irq <= 0)
+ if (!info || !info->mem)
return -EINVAL;
+ if (info->irq < 0)
+ return info->irq;
+
lpss = devm_kzalloc(dev, sizeof(*lpss), GFP_KERNEL);
if (!lpss)
return -ENOMEM;
--
2.25.1
On Wed, Nov 01, 2023 at 06:26:43AM +0000, Chen Ni wrote:
> platform_get_irq() returns a negative error code to indicating an
> error. So in intel_lpss_probe() the unset / erroneous IRQ should be
> returned as is.
>
> Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
There is no need for Fixes tag here.
> Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
> ---
> Changelog:
>
> v1 -> v2:
> 1. Update commit message
> 2. Fix IRQ check in intel_lpcc_probe()
> ---
> drivers/mfd/intel-lpss.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mfd/intel-lpss.c b/drivers/mfd/intel-lpss.c
> index 9591b354072a..4c9d0222751a 100644
> --- a/drivers/mfd/intel-lpss.c
> +++ b/drivers/mfd/intel-lpss.c
> @@ -378,9 +378,12 @@ int intel_lpss_probe(struct device *dev,
> struct intel_lpss *lpss;
> int ret;
>
> - if (!info || !info->mem || info->irq <= 0)
> + if (!info || !info->mem)
This check (info->irq <= 0) covers both "invalid" interrupt numbers
(that's the negative errno and 0 as no interrupt) so I don't see how
this change makes it any better and the changelog does not clarify it
either.
On Wed, Nov 01, 2023 at 09:03:10AM +0200, Mika Westerberg wrote:
> On Wed, Nov 01, 2023 at 06:26:43AM +0000, Chen Ni wrote:
> > platform_get_irq() returns a negative error code to indicating an
> > error. So in intel_lpss_probe() the unset / erroneous IRQ should be
> > returned as is.
> >
> > Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
> There is no need for Fixes tag here.
I said that already in v1 :-)
...
> > - if (!info || !info->mem || info->irq <= 0)
> > + if (!info || !info->mem)
>
> This check (info->irq <= 0) covers both "invalid" interrupt numbers
> (that's the negative errno and 0 as no interrupt) so I don't see how
> this change makes it any better and the changelog does not clarify it
> either.
It makes sense. The IRQ here may not be 0. We should actually fix
the PCI code to guarantee that (platform_get_irq() guarantees that
in platform driver).
--
With Best Regards,
Andy Shevchenko
On Wed, Nov 01, 2023 at 11:38:28AM +0200, Andy Shevchenko wrote:
> On Wed, Nov 01, 2023 at 09:03:10AM +0200, Mika Westerberg wrote:
> > On Wed, Nov 01, 2023 at 06:26:43AM +0000, Chen Ni wrote:
> > > platform_get_irq() returns a negative error code to indicating an
> > > error. So in intel_lpss_probe() the unset / erroneous IRQ should be
> > > returned as is.
> > >
> > > Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
>
> > There is no need for Fixes tag here.
>
> I said that already in v1 :-)
>
> ...
>
> > > - if (!info || !info->mem || info->irq <= 0)
> > > + if (!info || !info->mem)
> >
> > This check (info->irq <= 0) covers both "invalid" interrupt numbers
> > (that's the negative errno and 0 as no interrupt) so I don't see how
> > this change makes it any better and the changelog does not clarify it
> > either.
>
> It makes sense. The IRQ here may not be 0. We should actually fix
> the PCI code to guarantee that (platform_get_irq() guarantees that
> in platform driver).
Yeah but I mean the check above handles any "invalid" interrupt number
just fine regardless. I don't see any point changing that.
On Wed, Nov 01, 2023 at 12:47:17PM +0200, Mika Westerberg wrote: > On Wed, Nov 01, 2023 at 11:38:28AM +0200, Andy Shevchenko wrote: > > On Wed, Nov 01, 2023 at 09:03:10AM +0200, Mika Westerberg wrote: > > > On Wed, Nov 01, 2023 at 06:26:43AM +0000, Chen Ni wrote: ... > > > > - if (!info || !info->mem || info->irq <= 0) > > > > + if (!info || !info->mem) > > > > > > This check (info->irq <= 0) covers both "invalid" interrupt numbers > > > (that's the negative errno and 0 as no interrupt) so I don't see how > > > this change makes it any better and the changelog does not clarify it > > > either. > > > > It makes sense. The IRQ here may not be 0. We should actually fix > > the PCI code to guarantee that (platform_get_irq() guarantees that > > in platform driver). > > Yeah but I mean the check above handles any "invalid" interrupt number > just fine regardless. I don't see any point changing that. The point is to have proper error code to be returned. Currently it's shadowed in this check. -- With Best Regards, Andy Shevchenko
On Wed, Nov 01, 2023 at 11:38:28AM +0200, Andy Shevchenko wrote: > On Wed, Nov 01, 2023 at 09:03:10AM +0200, Mika Westerberg wrote: > > On Wed, Nov 01, 2023 at 06:26:43AM +0000, Chen Ni wrote: ... > We should actually fix the PCI code to guarantee that. (which also barely a fix as PCI IRQ == 0 is quite unusual case IRL) -- With Best Regards, Andy Shevchenko
© 2016 - 2025 Red Hat, Inc.