summaryrefslogtreecommitdiff
path: root/drivers/spi
diff options
context:
space:
mode:
authoryangerkun <yangerkun@huawei.com>2020-10-15 22:38:34 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-10-17 11:03:31 +0200
commit71ad780260089a19b8563096d64fd7588ccb0a0d (patch)
treef09b6771d3702cf5d67b49aa9e94b3a5131cc406 /drivers/spi
parent265e6dc04875bc757f5547cedd459ca92dfd0034 (diff)
spi: unbinding slave before calling spi_destroy_queue
We make a mistake while backport 'commit 84855678add8 ("spi: Fix controller unregister order")'. What we should do is call __unreigster for each device before spi_destroy_queue. This problem exist in linux-4.4.y/linux-4.9.y. Signed-off-by: yangerkun <yangerkun@huawei.com>
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/spi.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 57001f8f727a..6ed2959ce4dc 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -1917,13 +1917,13 @@ static int __unregister(struct device *dev, void *null)
*/
void spi_unregister_master(struct spi_master *master)
{
+ device_for_each_child(&master->dev, NULL, __unregister);
+
if (master->queued) {
if (spi_destroy_queue(master))
dev_err(&master->dev, "queue remove failed\n");
}
- device_for_each_child(&master->dev, NULL, __unregister);
-
mutex_lock(&board_lock);
list_del(&master->list);
mutex_unlock(&board_lock);