In the Linux kernel, the following vulnerability has been resolved: drivers: base: Free devm resources when unregistering a device In the current code, devresreleaseall() only gets called if the device has a bus and has been probed. This leads to issues when using bus-less or driver-less devices where the device might never get freed if a managed resource holds a reference to the device. This is happening in the DRM framework for example. We should thus call devresreleaseall() in the devicedel() function to make sure that the device-managed actions are properly executed when the device is unregistered, even if it has neither a bus nor a driver. This is effectively the same change than commit 2f8d16a996da ("devres: release resources on devicedel()") that got reverted by commit a525a3ddeaca ("driver core: free devres in devicerelease") over memory leaks concerns. This patch effectively combines the two commits mentioned above to release the resources both on devicedel() and device_release() and get the best of both worlds.