On Tue, Sep 20, 2022 at 4:37 AM Yang Yingliang <yangyingliang@xxxxxxxxxx> wrote: > > Switch to use devm_spi_alloc_master() to simpify error path. Typo: simplify. > Signed-off-by: Yang Yingliang <yangyingliang@xxxxxxxxxx> > --- > drivers/spi/spi-xtensa-xtfpga.c | 16 +++++----------- > 1 file changed, 5 insertions(+), 11 deletions(-) > > diff --git a/drivers/spi/spi-xtensa-xtfpga.c b/drivers/spi/spi-xtensa-xtfpga.c > index fc2b5eb7d614..2fa7608f94cd 100644 > --- a/drivers/spi/spi-xtensa-xtfpga.c > +++ b/drivers/spi/spi-xtensa-xtfpga.c > @@ -83,7 +83,7 @@ static int xtfpga_spi_probe(struct platform_device *pdev) > int ret; > struct spi_master *master; > > - master = spi_alloc_master(&pdev->dev, sizeof(struct xtfpga_spi)); > + master = devm_spi_alloc_master(&pdev->dev, sizeof(struct xtfpga_spi)); > if (!master) > return -ENOMEM; > > @@ -97,30 +97,24 @@ static int xtfpga_spi_probe(struct platform_device *pdev) > xspi->bitbang.chipselect = xtfpga_spi_chipselect; > xspi->bitbang.txrx_word[SPI_MODE_0] = xtfpga_spi_txrx_word; > xspi->regs = devm_platform_ioremap_resource(pdev, 0); > - if (IS_ERR(xspi->regs)) { > - ret = PTR_ERR(xspi->regs); > - goto err; > - } > + if (IS_ERR(xspi->regs)) > + return PTR_ERR(xspi->regs); > > xtfpga_spi_write32(xspi, XTFPGA_SPI_START, 0); > usleep_range(1000, 2000); > if (xtfpga_spi_read32(xspi, XTFPGA_SPI_BUSY)) { > dev_err(&pdev->dev, "Device stuck in busy state\n"); > - ret = -EBUSY; > - goto err; > + return -EBUSY; > } > > ret = spi_bitbang_start(&xspi->bitbang); > if (ret < 0) { > dev_err(&pdev->dev, "spi_bitbang_start failed\n"); > - goto err; > + return ret; > } > > platform_set_drvdata(pdev, master); > return 0; > -err: > - spi_master_put(master); > - return ret; > } > > static int xtfpga_spi_remove(struct platform_device *pdev) There's a call to spi_master_put in the xtfpga_spi_remove, IIUC this call must be dropped too. -- Thanks. -- Max