spi/mxs: Fix device remove function
authorGuenter Roeck <linux@roeck-us.net>
Fri, 24 Aug 2012 18:03:02 +0000 (11:03 -0700)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 27 Aug 2012 18:23:52 +0000 (11:23 -0700)
commit7d520d28dd5287d14b5ec6cf4405a1220ca57d42
tree608e5d27690e3053a941ee4d2e8ab92200932982
parent41682e03d4fdc947dbd22725d70f222cc7746852
spi/mxs: Fix device remove function

The call sequence spi_alloc_master/spi_register_master/spi_unregister_master
is complete; it reduces the device reference count to zero, which results in
device memory being freed. The remove function accesses the freed memory after
the call to spi_unregister_master(), _and_ it calls spi_master_put on the freed
memory.

Acquire a reference to the SPI master device and release it after cleanup is
complete (with the existing spi_master_put) to solve the problem.

Also, the device subsystem ensures that the remove function is only called once,
and resets device driver data to NULL. Remove the unnecessaary calls to
platform_set_drvdata().

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Marek Vasut <marex@denx.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/spi/spi-mxs.c
This page took 0.030453 seconds and 5 git commands to generate.