er core: free devres in device_release") Signed-off-by: David Gow Signed-off-by: Maxime Ripard Link: https://lore.kernel.org/r/20230720-kunit-devm-inconsistencies-test-v3-3-6aa7e074f373@kernel.org Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin Signed-off-by: Brennan Lamoreaux --- drivers/base/core.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/base/core.c b/drivers/base/core.c index 82eb25ad1..3f38e4aa6 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -3194,6 +3194,17 @@ void device_del(struct device *dev) device_remove_properties(dev); device_links_purge(dev); + /* + * If a device does not have a driver attached, we need to clean + * up any managed resources. We do this in device_release(), but + * it's never called (and we leak the device) if a managed + * resource holds a reference to the device. So release all + * managed resources here, like we do in driver_detach(). We + * still need to do so again in device_release() in case someone + * adds a new resource after this point, though. + */ + devres_release_all(dev); + if (dev->bus) blocking_notifier_call_chain(&dev->bus->p->bus_notifier, BUS_NOTIFY_REMOVED_DEVICE, dev); -- 2.43.7[PATCH v5.10] drivers: base: Free devm resources when unregistering a deviceBrennan Lamoreaux undefinedstable@vger.kernel.org, gregkh@linuxfoundation.org undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined†o†˛