spi: release device claimed by bus_find_device_by_name
diff mbox

Message ID 1271411579-30294-1-git-send-email-roman.tereshonkov@nokia.com
State Accepted
Headers show

Commit Message

Roman Tereshonkov April 16, 2010, 9:52 a.m. UTC
None

Patch
diff mbox

diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 9ffb0fd..ec429d1 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -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;
 	}