Re: [PATCH master] base: driver: fix double removal of child devices
flat view
From: Jules Maselbas <hidden>
Date: 2021-09-13 10:10:36
Hi Ahmad, On Mon, Sep 13, 2021 at 10:29:42AM +0200, Ahmad Fatoum wrote:
quoted hunk ↗ jump to hunk
Child devices like an ext4 file system on a partition may be removed twice: Once because they're in the active devices list and then once more, because unregister_device is called for the children of its parent. As struct bus_type::remove clears association of a driver with its device, we can set struct device_d::driver to NULL. unregister_device will then skip the second dev->bus->remove. Fixes: 29f1c211d86c ("fs: don't free device in remove callback") Signed-off-by: Ahmad Fatoum <redacted> --- drivers/base/driver.c | 3 +++ 1 file changed, 3 insertions(+)diff --git a/drivers/base/driver.c b/drivers/base/driver.c index 0e04ef36868d..0fedb30161b4 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c@@ -512,7 +512,10 @@ static void devices_shutdown(void) list_for_each_entry(dev, &active, active) { if (dev->bus->remove) + if (dev->bus->remove) {
I think there is a typo here, this line is duplicated.
dev->bus->remove(dev); + dev->driver = NULL; + } } } devshutdown_exitcall(devices_shutdown); -- 2.33.0 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox
_______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox