Commit 8e3ca32f authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Mark Brown

spi: spi-altera-dfl: Fix an error handling path

The spi_alloc_master() call is not undone in all error handling paths.
Moreover, there is no .remove function to release the allocated memory.

In order to fix both this issues, switch to devm_spi_alloc_master().

This allows further simplification of the probe.

Fixes: ba2fc167 ("spi: altera: Add DFL bus driver for Altera API Controller")
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/0607bb59f4073f86abe5c585d35245aef0b045c6.1653805901.git.christophe.jaillet@wanadoo.frSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent f2906aa8
...@@ -128,9 +128,9 @@ static int dfl_spi_altera_probe(struct dfl_device *dfl_dev) ...@@ -128,9 +128,9 @@ static int dfl_spi_altera_probe(struct dfl_device *dfl_dev)
struct spi_master *master; struct spi_master *master;
struct altera_spi *hw; struct altera_spi *hw;
void __iomem *base; void __iomem *base;
int err = -ENODEV; int err;
master = spi_alloc_master(dev, sizeof(struct altera_spi)); master = devm_spi_alloc_master(dev, sizeof(struct altera_spi));
if (!master) if (!master)
return -ENOMEM; return -ENOMEM;
...@@ -159,10 +159,9 @@ static int dfl_spi_altera_probe(struct dfl_device *dfl_dev) ...@@ -159,10 +159,9 @@ static int dfl_spi_altera_probe(struct dfl_device *dfl_dev)
altera_spi_init_master(master); altera_spi_init_master(master);
err = devm_spi_register_master(dev, master); err = devm_spi_register_master(dev, master);
if (err) { if (err)
dev_err(dev, "%s failed to register spi master %d\n", __func__, err); return dev_err_probe(dev, err, "%s failed to register spi master\n",
goto exit; __func__);
}
if (dfl_dev->revision == FME_FEATURE_REV_MAX10_SPI_N5010) if (dfl_dev->revision == FME_FEATURE_REV_MAX10_SPI_N5010)
strscpy(board_info.modalias, "m10-n5010", SPI_NAME_SIZE); strscpy(board_info.modalias, "m10-n5010", SPI_NAME_SIZE);
...@@ -179,9 +178,6 @@ static int dfl_spi_altera_probe(struct dfl_device *dfl_dev) ...@@ -179,9 +178,6 @@ static int dfl_spi_altera_probe(struct dfl_device *dfl_dev)
} }
return 0; return 0;
exit:
spi_master_put(master);
return err;
} }
static const struct dfl_device_id dfl_spi_altera_ids[] = { static const struct dfl_device_id dfl_spi_altera_ids[] = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment