• Guenter Roeck's avatar
    spi/mxs: Fix device remove function · 7d520d28
    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 unnecessaary calls to
    platform_set_drvdata().
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Reviewed-by: default avatarMarek Vasut <marex@denx.de>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    7d520d28
spi-mxs.c 14.7 KB