Message ID | 4488488.LvFx2qVVIh@kreacher (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | thermal: core/ACPI: Fix processor cooling device regression | expand |
On Mon, 2023-03-13 at 15:28 +0100, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > Introduce a helper function, thermal_cooling_device_present(), for > checking if the given cooling device is in the list of registered > cooling devices to avoid some code duplication in a subsequent > patch. > > No expected functional impact. > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Tested-by: Zhang Rui <rui.zhang@intel.com> Reviewed-by: Zhang Rui <rui.zhang@intel.com> thanks, rui > --- > > v1 -> v2: No changes > > --- > drivers/thermal/thermal_core.c | 21 +++++++++++++++------ > 1 file changed, 15 insertions(+), 6 deletions(-) > > Index: linux-pm/drivers/thermal/thermal_core.c > =================================================================== > --- linux-pm.orig/drivers/thermal/thermal_core.c > +++ linux-pm/drivers/thermal/thermal_core.c > @@ -1045,6 +1045,18 @@ devm_thermal_of_cooling_device_register( > } > EXPORT_SYMBOL_GPL(devm_thermal_of_cooling_device_register); > > +static bool thermal_cooling_device_present(struct > thermal_cooling_device *cdev) > +{ > + struct thermal_cooling_device *pos = NULL; > + > + list_for_each_entry(pos, &thermal_cdev_list, node) { > + if (pos == cdev) > + return true; > + } > + > + return false; > +} > + > static void __unbind(struct thermal_zone_device *tz, int mask, > struct thermal_cooling_device *cdev) > { > @@ -1067,20 +1079,17 @@ void thermal_cooling_device_unregister(s > int i; > const struct thermal_zone_params *tzp; > struct thermal_zone_device *tz; > - struct thermal_cooling_device *pos = NULL; > > if (!cdev) > return; > > mutex_lock(&thermal_list_lock); > - list_for_each_entry(pos, &thermal_cdev_list, node) > - if (pos == cdev) > - break; > - if (pos != cdev) { > - /* thermal cooling device not found */ > + > + if (!thermal_cooling_device_present(cdev)) { > mutex_unlock(&thermal_list_lock); > return; > } > + > list_del(&cdev->node); > > /* Unbind all thermal zones associated with 'this' cdev */ > > >
Index: linux-pm/drivers/thermal/thermal_core.c =================================================================== --- linux-pm.orig/drivers/thermal/thermal_core.c +++ linux-pm/drivers/thermal/thermal_core.c @@ -1045,6 +1045,18 @@ devm_thermal_of_cooling_device_register( } EXPORT_SYMBOL_GPL(devm_thermal_of_cooling_device_register); +static bool thermal_cooling_device_present(struct thermal_cooling_device *cdev) +{ + struct thermal_cooling_device *pos = NULL; + + list_for_each_entry(pos, &thermal_cdev_list, node) { + if (pos == cdev) + return true; + } + + return false; +} + static void __unbind(struct thermal_zone_device *tz, int mask, struct thermal_cooling_device *cdev) { @@ -1067,20 +1079,17 @@ void thermal_cooling_device_unregister(s int i; const struct thermal_zone_params *tzp; struct thermal_zone_device *tz; - struct thermal_cooling_device *pos = NULL; if (!cdev) return; mutex_lock(&thermal_list_lock); - list_for_each_entry(pos, &thermal_cdev_list, node) - if (pos == cdev) - break; - if (pos != cdev) { - /* thermal cooling device not found */ + + if (!thermal_cooling_device_present(cdev)) { mutex_unlock(&thermal_list_lock); return; } + list_del(&cdev->node); /* Unbind all thermal zones associated with 'this' cdev */