2022-08-12 06:46:04

by Dan Carpenter

[permalink] [raw]
Subject: [PATCH] irqchip: imx-mu-msi: fix platform_get_irq() error checking

The platform_get_irq() function returns negative error codes on error
so "gic_irq" needs to be signed to handle this correctly. Also change
the "<= 0" check to "< 0" and preserve the error code as the
documentation for platform_get_irq() shows.

Fixes: 893ae515ff8d ("irqchip: imx mu worked as msi controller")
Signed-off-by: Dan Carpenter <[email protected]>
---
drivers/irqchip/irq-imx-mu-msi.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/irqchip/irq-imx-mu-msi.c b/drivers/irqchip/irq-imx-mu-msi.c
index f7193a6c1245..97f3cdab8f58 100644
--- a/drivers/irqchip/irq-imx-mu-msi.c
+++ b/drivers/irqchip/irq-imx-mu-msi.c
@@ -80,7 +80,7 @@ struct imx_mu_msi {
struct imx_mu_msir *msir;
u32 irqs_num;
unsigned long used;
- u32 gic_irq;
+ int gic_irq;
struct clk *clk;
struct device *pd_a;
struct device *pd_b;
@@ -355,8 +355,8 @@ static int imx_mu_msi_probe(struct platform_device *pdev)
msi_data->irqs_num = IMX_MU_CHANS;

msi_data->gic_irq = platform_get_irq(msi_data->pdev, 0);
- if (msi_data->gic_irq <= 0)
- return -ENODEV;
+ if (msi_data->gic_irq < 0)
+ return msi_data->gic_irq;

platform_set_drvdata(pdev, msi_data);

--
2.35.1


2022-08-12 16:57:30

by Frank Li

[permalink] [raw]
Subject: RE: [EXT] [PATCH] irqchip: imx-mu-msi: fix platform_get_irq() error checking



> -----Original Message-----
> From: Dan Carpenter <[email protected]>
> Sent: Friday, August 12, 2022 1:23 AM
> To: Thomas Gleixner <[email protected]>; Frank Li <[email protected]>
> Cc: Marc Zyngier <[email protected]>; Shawn Guo <[email protected]>;
> Sascha Hauer <[email protected]>; Pengutronix Kernel Team
> <[email protected]>; Fabio Estevam <[email protected]>; dl-linux-
> imx <[email protected]>; Jon Mason <[email protected]>; linux-
> [email protected]; [email protected]
> Subject: [EXT] [PATCH] irqchip: imx-mu-msi: fix platform_get_irq() error
> checking
>
> Caution: EXT Email
>
> The platform_get_irq() function returns negative error codes on error
> so "gic_irq" needs to be signed to handle this correctly. Also change
> the "<= 0" check to "< 0" and preserve the error code as the
> documentation for platform_get_irq() shows.
>
> Fixes: 893ae515ff8d ("irqchip: imx mu worked as msi controller")
> Signed-off-by: Dan Carpenter <[email protected]>
> ---
[Frank Li] Thanks, 893ae515ff8d should be under review. There are still some issue, which need be fixed.
I am working on these. I will squash your patch into my next version.

> drivers/irqchip/irq-imx-mu-msi.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/irqchip/irq-imx-mu-msi.c b/drivers/irqchip/irq-imx-mu-
> msi.c
> index f7193a6c1245..97f3cdab8f58 100644
> --- a/drivers/irqchip/irq-imx-mu-msi.c
> +++ b/drivers/irqchip/irq-imx-mu-msi.c
> @@ -80,7 +80,7 @@ struct imx_mu_msi {
> struct imx_mu_msir *msir;
> u32 irqs_num;
> unsigned long used;
> - u32 gic_irq;
> + int gic_irq;
> struct clk *clk;
> struct device *pd_a;
> struct device *pd_b;
> @@ -355,8 +355,8 @@ static int imx_mu_msi_probe(struct platform_device
> *pdev)
> msi_data->irqs_num = IMX_MU_CHANS;
>
> msi_data->gic_irq = platform_get_irq(msi_data->pdev, 0);
> - if (msi_data->gic_irq <= 0)
> - return -ENODEV;
> + if (msi_data->gic_irq < 0)
> + return msi_data->gic_irq;
>
> platform_set_drvdata(pdev, msi_data);
>
> --
> 2.35.1