On Thu, Feb 04, 2021 at 05:13:04PM +0100, Greg Kroah-Hartman wrote: > On Thu, Feb 04, 2021 at 05:06:53PM +0100, Rafael J. Wysocki wrote: > > On Thu, Feb 4, 2021 at 3:17 PM Heikki Krogerus > > <heikki.krogerus@xxxxxxxxxxxxxxx> wrote: > > > > > > At the moment the function device_del() is calling > > > device_remove_properties() unconditionally. That will result into the > > > reference count of the software node attached to the device being > > > decremented, and in most cases it will hit 0 at that point. So in > > > practice device_del() will unregister the software node attached to > > > the device, even if that was not the intention of the caller. Right > > > now software nodes can not be reused or shared because of that. > > > > > > So device_del() can not unregister the software nodes unconditionally > > > like that. Unfortunately some of the users of device_add_properties() > > > are now relying on this behaviour. Because of that, and also in > > > general, we do need a function that can offer similar behaviour where > > > the lifetime of the software node is bound to the lifetime of the > > > device. But it just has to be a separate function so the behaviour is > > > optional. We can not remove the device_remove_properties() call from > > > device_del() before we have that new function, and before we have > > > replaced device_add_properties() calls with it in all the places that > > > require that behaviour. > > > > > > This adds function device_create_managed_software_node() that can be > > > used for exactly that purpose. Software nodes created with it are > > > declared "managed", and separate handling for those nodes is added to > > > the software node code. The reference count of the "managed" nodes is > > > decremented when the device they are attached to is removed. This will > > > not affect the other nodes that are not declared "managed". > > > > > > The function device_create_managed_software_node() has also one > > > additional feature that device_add_properties() does not have. It > > > allows the software nodes created with it to be part of a node > > > hierarchy by taking also an optional parent node as parameter. > > > > > > Signed-off-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > > > > The rationale is clear now, so > > > > Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > > > > and I'm assuming that this will be routed via the USB tree. > > Yes, I will do so, thanks. Now queued up, thanks! greg k-h