2017-08-09 16:22:07

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH] mtd: spi-nor: cqspi: fix error return code in cqspi_probe()

platform_get_irq() returns an error code, but the cadence-quadspi
driver ignores it and always returns -ENXIO. This is not correct
and, prevents -EPROBE_DEFER from being propagated properly.

Print and propagate the return value of platform_get_irq on failure.

This issue was detected with the help of Coccinelle.

Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
drivers/mtd/spi-nor/cadence-quadspi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi-nor/cadence-quadspi.c b/drivers/mtd/spi-nor/cadence-quadspi.c
index 53c7d8e..15dacf5 100644
--- a/drivers/mtd/spi-nor/cadence-quadspi.c
+++ b/drivers/mtd/spi-nor/cadence-quadspi.c
@@ -1202,8 +1202,8 @@ static int cqspi_probe(struct platform_device *pdev)
/* Obtain IRQ line. */
irq = platform_get_irq(pdev, 0);
if (irq < 0) {
- dev_err(dev, "Cannot obtain IRQ.\n");
- return -ENXIO;
+ dev_err(dev, "Cannot obtain IRQ: %d\n", irq);
+ return irq;
}

ret = clk_prepare_enable(cqspi->clk);
--
2.5.0


2017-08-09 17:44:00

by Marek Vasut

[permalink] [raw]
Subject: Re: [PATCH] mtd: spi-nor: cqspi: fix error return code in cqspi_probe()

On 08/09/2017 06:22 PM, Gustavo A. R. Silva wrote:
> platform_get_irq() returns an error code, but the cadence-quadspi
> driver ignores it and always returns -ENXIO. This is not correct
> and, prevents -EPROBE_DEFER from being propagated properly.
>
> Print and propagate the return value of platform_get_irq on failure.
>
> This issue was detected with the help of Coccinelle.
>
> Signed-off-by: Gustavo A. R. Silva <[email protected]>
> ---
> drivers/mtd/spi-nor/cadence-quadspi.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mtd/spi-nor/cadence-quadspi.c b/drivers/mtd/spi-nor/cadence-quadspi.c
> index 53c7d8e..15dacf5 100644
> --- a/drivers/mtd/spi-nor/cadence-quadspi.c
> +++ b/drivers/mtd/spi-nor/cadence-quadspi.c
> @@ -1202,8 +1202,8 @@ static int cqspi_probe(struct platform_device *pdev)
> /* Obtain IRQ line. */
> irq = platform_get_irq(pdev, 0);
> if (irq < 0) {
> - dev_err(dev, "Cannot obtain IRQ.\n");
> - return -ENXIO;
> + dev_err(dev, "Cannot obtain IRQ: %d\n", irq);

"Cannot obtain IRQ, ret=%i\n" please . It's inobvious what the value
means otherwise.

> + return irq;
> }
>
> ret = clk_prepare_enable(cqspi->clk);
>


--
Best regards,
Marek Vasut