• Rafael J. Wysocki's avatar
    ACPI: thermal: Carry out trip point updates under zone lock · 68f4f037
    Rafael J. Wysocki authored
    There is a race condition between acpi_thermal_trips_update() and
    acpi_thermal_check_fn(), because the trip points may get updated while
    the latter is running which in theory may lead to inconsistent results.
    For example, if two trips are updated together, using the temperature
    value of one of them from before the update and the temperature value
    of the other one from after the update may not lead to the expected
    outcome.
    
    Moreover, if thermal_get_trend() runs when a trip points update is in
    progress, it may end up using stale trip point temperatures.
    
    To address this, make acpi_thermal_trips_update() call
    thermal_zone_device_exec() to carry out the trip points update and
    use a new  acpi_thermal_adjust_thermal_zone() wrapper around
    __acpi_thermal_trips_update() as the callback function for the latter.
    
    While at it, change the acpi_thermal_trips_update() return data type
    to void as that function always returns 0 anyway.
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    68f4f037
thermal.c 30 KB