diff options
author | Lan Tianyu <tianyu.lan@intel.com> | 2013-08-27 16:29:31 +0800 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-08-28 21:47:07 +0200 |
commit | 668e02004462487df8ec6c65c665ddb8af78dc12 (patch) | |
tree | 219461522ad0444b63a1e9e62fbe28d4652bd653 | |
parent | 7702ae0dd9b40930931914866999a2ac9734d3eb (diff) | |
download | linux-stable-668e02004462487df8ec6c65c665ddb8af78dc12.tar.gz linux-stable-668e02004462487df8ec6c65c665ddb8af78dc12.tar.bz2 linux-stable-668e02004462487df8ec6c65c665ddb8af78dc12.zip |
ACPI / thermal: Add check of "_TZD" availability and evaluating result
Some machines don't provide _TZD, so check the availability of it
before carrying out futher operations.
If _TZD is present, also check the result of its evaluation.
[rjw: Changelog]
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | drivers/acpi/thermal.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index ccf9527d7ed3..0055c83c26c0 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c @@ -485,14 +485,14 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag) break; } - if (flag & ACPI_TRIPS_DEVICES) { - memset(&devices, 0, sizeof(struct acpi_handle_list)); + if ((flag & ACPI_TRIPS_DEVICES) + && acpi_has_method(tz->device->handle, "_TZD")) { + memset(&devices, 0, sizeof(devices)); status = acpi_evaluate_reference(tz->device->handle, "_TZD", NULL, &devices); - if (memcmp(&tz->devices, &devices, - sizeof(struct acpi_handle_list))) { - memcpy(&tz->devices, &devices, - sizeof(struct acpi_handle_list)); + if (ACPI_SUCCESS(status) + && memcmp(&tz->devices, &devices, sizeof(devices))) { + tz->devices = devices; ACPI_THERMAL_TRIPS_EXCEPTION(flag, "device"); } } |