mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
spi: release device claimed by bus_find_device_by_name
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>
This commit is contained in:
parent
9bd73715a1
commit
8ec130a017
@ -257,6 +257,7 @@ int spi_add_device(struct spi_device *spi)
|
|||||||
{
|
{
|
||||||
static DEFINE_MUTEX(spi_add_lock);
|
static DEFINE_MUTEX(spi_add_lock);
|
||||||
struct device *dev = spi->master->dev.parent;
|
struct device *dev = spi->master->dev.parent;
|
||||||
|
struct device *d;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
/* Chipselects are numbered 0..max; validate. */
|
/* Chipselects are numbered 0..max; validate. */
|
||||||
@ -278,10 +279,11 @@ int spi_add_device(struct spi_device *spi)
|
|||||||
*/
|
*/
|
||||||
mutex_lock(&spi_add_lock);
|
mutex_lock(&spi_add_lock);
|
||||||
|
|
||||||
if (bus_find_device_by_name(&spi_bus_type, NULL, dev_name(&spi->dev))
|
d = bus_find_device_by_name(&spi_bus_type, NULL, dev_name(&spi->dev));
|
||||||
!= NULL) {
|
if (d != NULL) {
|
||||||
dev_err(dev, "chipselect %d already in use\n",
|
dev_err(dev, "chipselect %d already in use\n",
|
||||||
spi->chip_select);
|
spi->chip_select);
|
||||||
|
put_device(d);
|
||||||
status = -EBUSY;
|
status = -EBUSY;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user