|
@@ -2254,12 +2254,6 @@ void spi_unregister_controller(struct spi_controller *ctlr)
|
|
mutex_lock(&board_lock);
|
|
mutex_lock(&board_lock);
|
|
found = idr_find(&spi_master_idr, id);
|
|
found = idr_find(&spi_master_idr, id);
|
|
mutex_unlock(&board_lock);
|
|
mutex_unlock(&board_lock);
|
|
- if (found != ctlr) {
|
|
|
|
- dev_dbg(&ctlr->dev,
|
|
|
|
- "attempting to delete unregistered controller [%s]\n",
|
|
|
|
- dev_name(&ctlr->dev));
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
if (ctlr->queued) {
|
|
if (ctlr->queued) {
|
|
if (spi_destroy_queue(ctlr))
|
|
if (spi_destroy_queue(ctlr))
|
|
dev_err(&ctlr->dev, "queue remove failed\n");
|
|
dev_err(&ctlr->dev, "queue remove failed\n");
|
|
@@ -2272,7 +2266,8 @@ void spi_unregister_controller(struct spi_controller *ctlr)
|
|
device_unregister(&ctlr->dev);
|
|
device_unregister(&ctlr->dev);
|
|
/* free bus id */
|
|
/* free bus id */
|
|
mutex_lock(&board_lock);
|
|
mutex_lock(&board_lock);
|
|
- idr_remove(&spi_master_idr, id);
|
|
|
|
|
|
+ if (found == ctlr)
|
|
|
|
+ idr_remove(&spi_master_idr, id);
|
|
mutex_unlock(&board_lock);
|
|
mutex_unlock(&board_lock);
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(spi_unregister_controller);
|
|
EXPORT_SYMBOL_GPL(spi_unregister_controller);
|