spi: core: Fix spi_register_master error handling
authorAxel Lin <axel.lin@ingics.com>
Sat, 31 Aug 2013 12:25:52 +0000 (20:25 +0800)
committerMark Brown <broonie@linaro.org>
Sat, 31 Aug 2013 16:51:06 +0000 (17:51 +0100)
In the case spi_master_initialize_queue() fails, current code calls
device_unregister() before return error from spi_register_master().
However, all the drivers call spi_master_put() in the error path if
spi_register_master() fails. Thus we should call device_del() rather than
device_unregister() before return error from spi_register_master().

This also makes all the spi_register_master() error handling consistent,
because all other error paths of spi_register_master() expect drivers to
call spi_master_put() if spi_register_master() fails.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/spi/spi.c

index b1db83f1b4aa7ff2fb66dc1c7f3525c5ac802867..f56017ea55e92c909bb4f0bb3b179f6a6fe08853 100644 (file)
@@ -1169,7 +1169,7 @@ int spi_register_master(struct spi_master *master)
        else {
                status = spi_master_initialize_queue(master);
                if (status) {
-                       device_unregister(&master->dev);
+                       device_del(&master->dev);
                        goto done;
                }
        }