On Mon, Dec 11, 2023 at 6:35 PM Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> wrote: > > On 11/12/2023 17:42, Rafael J. Wysocki wrote: > > On Mon, Dec 11, 2023 at 5:28 PM Daniel Lezcano > > <daniel.lezcano@xxxxxxxxxx> wrote: > >> > >> On 08/12/2023 20:13, Rafael J. Wysocki wrote: > >>> From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > >>> > >>> Make thermal_zone_device_unregister() wait until all of the references > >>> to the given thermal zone object have been dropped and free it before > >>> returning. > >>> > >>> This guarantees that when thermal_zone_device_unregister() returns, > >>> there is no leftover activity regarding the thermal zone in question > >>> which is required by some of its callers (for instance, modular driver > >>> code that wants to know when it is safe to let the module go away). > >>> > >>> Subsequently, this will allow some confusing device_is_registered() > >>> checks to be dropped from the thermal sysfs and core code. > >>> > >>> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > >>> --- > >> > >> Definitively agree on the change > >> > >> Acked-by: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> > > > > Thanks! > > > >> Would it make sense to use kref_get/put ? > > > > Why and where? > > Well it is a general question. Usually this kind of removal is tied with > a refcount It is tied to a refcount already, but the problem is that the last reference can be dropped from a thread concurrent to the removal one. The completion effectively causes the removal thread to wait for the refcont to become 0.