[06/10,V2] spi: Add SPI driver for mx233/mx28

Guenter Roeck linux at roeck-us.net
Tue Jul 31 16:53:00 EDT 2012


On Fri, Jul 06, 2012 at 06:17:25AM -0000, Marek Vasut wrote:
> This is slightly reworked version of the SPI driver.
> Support for DT has been added and it's been converted
> to queued API.
> 
> Based on previous attempt by:
> Fabio Estevam <fabio.estevam at freescale.com>
> 
> Signed-off-by: Fabio Estevam <fabio.estevam at freescale.com>
> Signed-off-by: Marek Vasut <marex at denx.de>
> Cc: Chris Ball <cjb at laptop.org>
> Cc: Detlev Zundel <dzu at denx.de>
> CC: Dong Aisheng <b29396 at freescale.com>
> Cc: Grant Likely <grant.likely at secretlab.ca>
> Cc: Linux ARM kernel <linux-arm-kernel at lists.infradead.org>
> Cc: Rob Herring <rob.herring at calxeda.com>
> CC: Shawn Guo <shawn.guo at linaro.org>
> Cc: Stefano Babic <sbabic at denx.de>
> Cc: Wolfgang Denk <wd at denx.de>
> 
> ---
> drivers/spi/Kconfig   |    7 +
>  drivers/spi/Makefile  |    1 +
>  drivers/spi/spi-mxs.c |  427 +++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 435 insertions(+)
>  create mode 100644 drivers/spi/spi-mxs.c
> 
> V2: Fix my patch version management
>     Select STMP_DEVICE (thanks Shawn for pointing this out)
> 
Hi,

I have one question about this patch.

[ ... ]

> index 0000000..3c0b1ac
> --- /dev/null
> +++ b/drivers/spi/spi-mxs.c

[ ... ]

> +
> +static int __devinit mxs_spi_probe(struct platform_device *pdev)
> +{

[ ... ]

> +out_host_free:
> +	clk_disable_unprepare(ssp->clk);
> +	spi_master_put(host);
> +	kfree(host);
> +	return ret;
> +}
> +
> +static int __devexit mxs_spi_remove(struct platform_device *pdev)
> +{
> +	struct spi_master *host;
> +	struct mxs_spi *spi;
> +	struct mxs_ssp *ssp;
> +
> +	host = platform_get_drvdata(pdev);
> +	spi = spi_master_get_devdata(host);
> +	ssp = &spi->ssp;
> +
> +	spi_unregister_master(host);
> +
> +	platform_set_drvdata(pdev, NULL);
> +
> +	clk_disable_unprepare(ssp->clk);
> +
> +	spi_master_put(host);
> +	kfree(host);
> +

Is the kfree() here and in the probe function really necessary ? 

Couple of reasons for asking: No other SPI master driver calls it in the remove
function (unless I missed it), most drivers don't call it in the probe
function error path, and if I call it in the remove function in a SPI master
driver I am working on, and load/unload the module several times in a row, I get
a nasty kernel crash.

Thanks,
Guenter



More information about the linux-arm-kernel mailing list