• Guenter Roeck's avatar
    spi/stmp: Fix device remove function · 154390dc
    Guenter Roeck authored
    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 respective check and drop the
    unnecessaary call to platform_set_drvdata().
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    154390dc
spi-stmp.c 15.6 KB