|
@@ -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;
|
|
|
}
|