Patch "spi: Fix controller unregister order" has been added to the 4.4-stable tree
Subsystems (2)
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 48 lines · Sasha Levin
This is a note to let you know that I've just added the patch titled
spi: Fix controller unregister order
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summaryThe filename of the patch is:
spi-fix-controller-unregister-order.patch
and it can be found in the queue-4.4 subdirectory.If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
commit
af9adff04d45f726c49bc1be4a401877e627adf3Author: Lukas Wunner <[email protected]> Date: Fri May 15 17:58:01 2020 +0200spi: Fix controller unregister order
[ Upstream commit
84855678add8aba927faf76bc2f130a40f94b6f7]When an SPI controller unregisters, it unbinds all its slave devices. For this, their drivers may need to access the SPI bus, e.g. to quiesce interrupts.
However since commit
ffbbdd21329f("spi: create a message queueing infrastructure"),spi_destroy_queue()is executed before unbinding the slaves. It setsctlr->running= false, thereby preventing SPI bus access and causing unbinding of slave devices to fail.Fix by unbinding slaves before calling
spi_destroy_queue().Fixes ffbbdd21329f ("spi: create a message queueing infrastructure")Signed-off-by Lukas Wunner <[email protected]>Cc [email protected] # v3.4+Cc Linus Walleij <[email protected]>Link https://lore.kernel.org/r/8aaf9d44c153fe233b17bc2dec4eb679898d7e7b.1589557526.git.lukas@wunner.de open hereSigned-off-by Mark Brown <[email protected]>Signed-off-by Sasha Levin <[email protected]>drivers/spi/spi.c +0
-0
drivers/spi/spi.c void spi_unregister_master(struct spi_master *master) · line 1926
Quoted 5 lines
drivers/spi/spi.c +2
-0@@ -1922,11 +1922,12 @@ void spi_unregister_master(struct spi_master *master)dev_err (&master->dev,"queue remove failed\n" ); } +device_for_each_child (&master->dev,NULL , __unregister); +
Hi,
This is a wrong patch. We should move this line before spi_destroy_queue, but we didn't. 4.9 stable exists this problem too.
Thanks,
Kun.
Quoted 11 lines
drivers/spi/spi.c +0
-1mutex_lock (&board_lock);list_del (&master->list);mutex_unlock (&board_lock); -device_for_each_child (&master->dev,NULL , __unregister);device_unregister (&master->dev); }EXPORT_SYMBOL_GPL (spi_unregister_master);.
Quoted 6 lines · yangerkun
?? 2020/6/16 9:56, Sasha Levin ????:
Quoted 5 lines
This is a note to let you know that I've just added the patch titled
spi: Fix controller unregister order
to the 4.4-stable tree which can be found at:
[...]
Quoted 11 lines
drivers/spi/spi.c void spi_unregister_master(struct spi_master *master) · line 1925
Quoted 7 lines
drivers/spi/spi.c +2
-0@@ -1922,11 +1922,12 @@ void spi_unregister_master(struct spi_master *master)dev_err (&master->dev,"queue remove failed\n" ); } +device_for_each_child (&master->dev,NULL , __unregister); +This is a wrong patch. We should move this line before
spi_destroy_queue, but we didn't. 4.9 stable exists this problem too.
Hi Sasha, Hi Greg,
below please find a patch for the 4.9-stable tree to fix the backporting issue reported above.
Thanks!
-- >8 --
Subject: [PATCH] spi: Fix controller unregister order harder
Commit c7e41e1caa71 sought to backport upstream commit 84855678add8 to the 4.9-stable tree but erroneously inserted a line at the wrong place. Fix it.
--- drivers/spi/spi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/spi/spi.c +2 -2
@@ -2070,13 +2070,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);
Signature · 1 line
2.29.2
Greg KH
maintainerQuoted 20 lines · Lukas Wunner
Quoted 6 lines · yangerkun
?? 2020/6/16 9:56, Sasha Levin ????:
Quoted 5 lines
This is a note to let you know that I've just added the patch titled
spi: Fix controller unregister order
to the 4.4-stable tree which can be found at:
[...]
Quoted 11 lines
drivers/spi/spi.c void spi_unregister_master(struct spi_master *master) · line 1925
Quoted 7 lines
drivers/spi/spi.c +2
-0@@ -1922,11 +1922,12 @@ void spi_unregister_master(struct spi_master *master)dev_err (&master->dev,"queue remove failed\n" ); } +device_for_each_child (&master->dev,NULL , __unregister); +This is a wrong patch. We should move this line before
spi_destroy_queue, but we didn't. 4.9 stable exists this problem too.
Quoted 4 lines
Hi Sasha, Hi Greg,
below please find a patch for the 4.9-stable tree to fix the backporting issue reported above.
Now applied, thanks.
greg k-h