Message ID | 20211224022321.1470969-1-jiasheng@iscas.ac.cn |
---|---|
State | Changes Requested |
Headers | show |
Series | mtd: onenand: Check for error irq | expand |
Hi Jiasheng, jiasheng@iscas.ac.cn wrote on Fri, 24 Dec 2021 10:23:21 +0800: > For the possible failure of the platform_get_irq(), the returned irq > could be error number and will finally cause the failure of the > request_irq(). > Consider that platform_get_irq() can now in certain cases return > -EPROBE_DEFER, and the consequences of letting request_irq() effectively > convert that into -EINVAL, even at probe time rather than later on. > So it might be better to check just now. > > Fixes: 26777d37216c ("mtd: Move onenand code base to drivers/mtd/nand/onenand") This is not the root cause. > Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn> > --- > 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; Otherwise looks fine. Thanks, Miquèl
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;
For the possible failure of the platform_get_irq(), the returned irq could be error number and will finally cause the failure of the request_irq(). Consider that platform_get_irq() can now in certain cases return -EPROBE_DEFER, and the consequences of letting request_irq() effectively convert that into -EINVAL, even at probe time rather than later on. So it might be better to check just now. Fixes: 26777d37216c ("mtd: Move onenand code base to drivers/mtd/nand/onenand") Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn> --- drivers/mtd/nand/onenand/generic.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)