diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-04-30 12:57:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-04-30 12:57:55 -0400 |
commit | 8f2adb7cab81fc4984ddfe3a1efd1b62d52bead8 (patch) | |
tree | 75f48007900d3386cfaa0e9d5ad460f6c51f1635 /drivers/spi/spi.c | |
parent | 66f41d4c5c8a5deed66fdcc84509376c9a0bf9d8 (diff) | |
parent | 95b1ed2ac7ffe3205afc6f5a20320fbdb984da92 (diff) |
Merge branch 'merge' of git://git.secretlab.ca/git/linux-2.6
* 'merge' of git://git.secretlab.ca/git/linux-2.6:
spi: spidev_test gives error upon 1-byte transfer
omap2_mcspi: small fixes of output data format
omap2_mcspi: Flush posted writes
spi: spi_device memory should be released instead of device.
spi: release device claimed by bus_find_device_by_name
of: check for IS_ERR()
serial/mpc52xx_uart: Drop outdated comments
gpio: potential null dereference
Diffstat (limited to 'drivers/spi/spi.c')
-rw-r--r-- | drivers/spi/spi.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 9ffb0fdbd6fe..b3a1f9259b62 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c | |||
@@ -41,7 +41,7 @@ static void spidev_release(struct device *dev) | |||
41 | spi->master->cleanup(spi); | 41 | spi->master->cleanup(spi); |
42 | 42 | ||
43 | spi_master_put(spi->master); | 43 | spi_master_put(spi->master); |
44 | kfree(dev); | 44 | kfree(spi); |
45 | } | 45 | } |
46 | 46 | ||
47 | static ssize_t | 47 | static ssize_t |
@@ -257,6 +257,7 @@ int spi_add_device(struct spi_device *spi) | |||
257 | { | 257 | { |
258 | static DEFINE_MUTEX(spi_add_lock); | 258 | static DEFINE_MUTEX(spi_add_lock); |
259 | struct device *dev = spi->master->dev.parent; | 259 | struct device *dev = spi->master->dev.parent; |
260 | struct device *d; | ||
260 | int status; | 261 | int status; |
261 | 262 | ||
262 | /* Chipselects are numbered 0..max; validate. */ | 263 | /* Chipselects are numbered 0..max; validate. */ |
@@ -278,10 +279,11 @@ int spi_add_device(struct spi_device *spi) | |||
278 | */ | 279 | */ |
279 | mutex_lock(&spi_add_lock); | 280 | mutex_lock(&spi_add_lock); |
280 | 281 | ||
281 | if (bus_find_device_by_name(&spi_bus_type, NULL, dev_name(&spi->dev)) | 282 | d = bus_find_device_by_name(&spi_bus_type, NULL, dev_name(&spi->dev)); |
282 | != NULL) { | 283 | if (d != NULL) { |
283 | dev_err(dev, "chipselect %d already in use\n", | 284 | dev_err(dev, "chipselect %d already in use\n", |
284 | spi->chip_select); | 285 | spi->chip_select); |
286 | put_device(d); | ||
285 | status = -EBUSY; | 287 | status = -EBUSY; |
286 | goto done; | 288 | goto done; |
287 | } | 289 | } |