]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
spi: unbinding slave before calling spi_destroy_queue
authoryangerkun <yangerkun@huawei.com>
Thu, 15 Oct 2020 14:38:34 +0000 (22:38 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 17 Oct 2020 09:03:31 +0000 (11:03 +0200)
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>
drivers/spi/spi.c

index 57001f8f727a35af16f38fe448c10db605ddc8d3..6ed2959ce4dc069ced434e0cd8c2a01a8fa286ec 100644 (file)
@@ -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);