[PATCH 1/3] mtd: fsl-quadspi: Fix the error paths

Brian Norris computersforpeace at gmail.com
Thu Feb 5 20:04:21 PST 2015


On Thu, Jan 22, 2015 at 10:43:05PM -0200, Fabio Estevam wrote:
> From: Fabio Estevam <fabio.estevam at freescale.com>
> 
> Jumping to 'map_failed' label is not correct at these points, as it misses to
> disable the clocks that were previously enabled.
> 
> Jump to 'irq_failed' label instead that will correctly disable the clocks.
> 
> Signed-off-by: Fabio Estevam <fabio.estevam at freescale.com>

Applied all 3 to l2-mtd.git, thanks.

> ---
>  drivers/mtd/spi-nor/fsl-quadspi.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c
> index a46bea3..a733bd2 100644
> --- a/drivers/mtd/spi-nor/fsl-quadspi.c
> +++ b/drivers/mtd/spi-nor/fsl-quadspi.c
> @@ -890,24 +890,24 @@ static int fsl_qspi_probe(struct platform_device *pdev)
>  
>  		ret = of_modalias_node(np, modalias, sizeof(modalias));
>  		if (ret < 0)
> -			goto map_failed;
> +			goto irq_failed;
>  
>  		ret = of_property_read_u32(np, "spi-max-frequency",
>  				&q->clk_rate);
>  		if (ret < 0)
> -			goto map_failed;
> +			goto irq_failed;
>  
>  		/* set the chip address for READID */
>  		fsl_qspi_set_base_addr(q, nor);
>  
>  		ret = spi_nor_scan(nor, modalias, SPI_NOR_QUAD);
>  		if (ret)
> -			goto map_failed;
> +			goto irq_failed;
>  
>  		ppdata.of_node = np;
>  		ret = mtd_device_parse_register(mtd, NULL, &ppdata, NULL, 0);
>  		if (ret)
> -			goto map_failed;
> +			goto irq_failed;
>  
>  		/* Set the correct NOR size now. */
>  		if (q->nor_size == 0) {

FYI, the error handling is still wrong here (it's just less wrong). If
the second device fails to scan for some reason, you aren't
unregistering the first. This will leave an MTD around that has no
driver backing it.

Brian



More information about the linux-mtd mailing list