spi: release device claimed by bus_find_device_by_name
authorRoman Tereshonkov <roman.tereshonkov@nokia.com>
Fri, 16 Apr 2010 09:52:59 +0000 (09:52 +0000)
committerGrant Likely <grant.likely@secretlab.ca>
Wed, 28 Apr 2010 07:14:05 +0000 (01:14 -0600)
In success case the function bus_find_device_by_name calls
get_device. In our context put_device should be called to
decrease the device count usage.

Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
drivers/spi/spi.c

index 9ffb0fdbd6fe6b7235ccb6c73963b4a75f219aee..ec429d156a574d35616de9ad8499ba860fadf392 100644 (file)
@@ -257,6 +257,7 @@ int spi_add_device(struct spi_device *spi)
 {
        static DEFINE_MUTEX(spi_add_lock);
        struct device *dev = spi->master->dev.parent;
+       struct device *d;
        int status;
 
        /* Chipselects are numbered 0..max; validate. */
@@ -278,10 +279,11 @@ int spi_add_device(struct spi_device *spi)
         */
        mutex_lock(&spi_add_lock);
 
-       if (bus_find_device_by_name(&spi_bus_type, NULL, dev_name(&spi->dev))
-                       != NULL) {
+       d = bus_find_device_by_name(&spi_bus_type, NULL, dev_name(&spi->dev));
+       if (d != NULL) {
                dev_err(dev, "chipselect %d already in use\n",
                                spi->chip_select);
+               put_device(d);
                status = -EBUSY;
                goto done;
        }