2022-01-04 14:59:26

by Jiasheng Jiang

[permalink] [raw]
Subject: [PATCH v2] mtd: onenand: Check for error irq

As it is possible that there is no suitable irq, platform_get_irq()
will return error number.
Therefore, it might be better to check it and return error if fails
to guarantee the success of the probe.

Fixes: 26777d37216c ("mtd: Move onenand code base to drivers/mtd/nand/onenand")
Signed-off-by: Jiasheng Jiang <[email protected]>
---
Changelog:

v1 -> v2

* Change 1. Change the commit message.
---
drivers/mtd/nand/onenand/generic.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/mtd/nand/onenand/generic.c b/drivers/mtd/nand/onenand/generic.c
index 8b6f4da5d720..a4b8b65fe15f 100644
--- a/drivers/mtd/nand/onenand/generic.c
+++ b/drivers/mtd/nand/onenand/generic.c
@@ -53,7 +53,12 @@ static int generic_onenand_probe(struct platform_device *pdev)
}

info->onenand.mmcontrol = pdata ? pdata->mmcontrol : NULL;
- info->onenand.irq = platform_get_irq(pdev, 0);
+
+ err = platform_get_irq(pdev, 0);
+ if (err < 0)
+ goto out_iounmap;
+
+ info->onenand.irq = err;

info->mtd.dev.parent = &pdev->dev;
info->mtd.priv = &info->onenand;
--
2.25.1



2022-01-04 15:21:51

by Miquel Raynal

[permalink] [raw]
Subject: Re: [PATCH v2] mtd: onenand: Check for error irq

Hi Jiasheng,

[email protected] wrote on Tue, 4 Jan 2022 22:58:54 +0800:

> As it is possible that there is no suitable irq, platform_get_irq()
> will return error number.

an

> Therefore, it might be better to check it and return error if fails

an failed

> to guarantee the success of the probe.

in order to

Actually in case of error it will not guarantee the success of the
probe so I'm not sure what you are trying to solve here?

Either the irq is mandatory and you may want to check its presence
earlier, or it is not mandatory and you could use get_irq_optional()
maybe.

> Fixes: 26777d37216c ("mtd: Move onenand code base to drivers/mtd/nand/onenand")

This Fixes tag is still wrong.

> Signed-off-by: Jiasheng Jiang <[email protected]>
> ---
> Changelog:
>
> v1 -> v2
>
> * Change 1. Change the commit message.
> ---
> drivers/mtd/nand/onenand/generic.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mtd/nand/onenand/generic.c b/drivers/mtd/nand/onenand/generic.c
> index 8b6f4da5d720..a4b8b65fe15f 100644
> --- a/drivers/mtd/nand/onenand/generic.c
> +++ b/drivers/mtd/nand/onenand/generic.c
> @@ -53,7 +53,12 @@ static int generic_onenand_probe(struct platform_device *pdev)
> }
>
> info->onenand.mmcontrol = pdata ? pdata->mmcontrol : NULL;
> - info->onenand.irq = platform_get_irq(pdev, 0);
> +
> + err = platform_get_irq(pdev, 0);
> + if (err < 0)
> + goto out_iounmap;
> +
> + info->onenand.irq = err;
>
> info->mtd.dev.parent = &pdev->dev;
> info->mtd.priv = &info->onenand;


Thanks,
Miquèl