Skip to content

Commit

Permalink
Merge branch 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/gi…
Browse files Browse the repository at this point in the history
…t/rzhang/linux

Pull thermal management fixes from Zhang Rui:
 "Specifics:

   - Fix a problem that Intel SoC DTS thermal driver does not work when
     CONFIG_THERMAL_INT340X is not set.

   - Fix a NULL pointer dereference when processor_thermal_device driver
     is loaded on a platform without ACPI support"

* 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
  int340x_thermal/processor_thermal_device: return failure when
  ACPI/int340x_thermal: enumerate INT3401 for Intel SoC DTS thermal driver
  ACPI/int340x_thermal: enumerate INT340X devices even if they're not in _ART/_TRT
  • Loading branch information
torvalds committed Jan 13, 2015
2 parents 971780b + ad0f409 commit 4f7a42d
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 16 deletions.
11 changes: 7 additions & 4 deletions drivers/acpi/int340x_thermal.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@

#include "internal.h"

#define DO_ENUMERATION 0x01
#define INT3401_DEVICE 0X01
static const struct acpi_device_id int340x_thermal_device_ids[] = {
{"INT3400", DO_ENUMERATION },
{"INT3401"},
{"INT3400"},
{"INT3401", INT3401_DEVICE},
{"INT3402"},
{"INT3403"},
{"INT3404"},
Expand All @@ -34,7 +34,10 @@ static int int340x_thermal_handler_attach(struct acpi_device *adev,
const struct acpi_device_id *id)
{
#if defined(CONFIG_INT340X_THERMAL) || defined(CONFIG_INT340X_THERMAL_MODULE)
if (id->driver_data == DO_ENUMERATION)
acpi_create_platform_device(adev);
#elif defined(INTEL_SOC_DTS_THERMAL) || defined(INTEL_SOC_DTS_THERMAL_MODULE)
/* Intel SoC DTS thermal driver needs INT3401 to set IRQ descriptor */
if (id->driver_data == INT3401_DEVICE)
acpi_create_platform_device(adev);
#endif
return 1;
Expand Down
16 changes: 4 additions & 12 deletions drivers/thermal/int340x_thermal/acpi_thermal_rel.c
Original file line number Diff line number Diff line change
Expand Up @@ -119,15 +119,11 @@ int acpi_parse_trt(acpi_handle handle, int *trt_count, struct trt **trtp,
continue;

result = acpi_bus_get_device(trt->source, &adev);
if (!result)
acpi_create_platform_device(adev);
else
if (result)
pr_warn("Failed to get source ACPI device\n");

result = acpi_bus_get_device(trt->target, &adev);
if (!result)
acpi_create_platform_device(adev);
else
if (result)
pr_warn("Failed to get target ACPI device\n");
}

Expand Down Expand Up @@ -206,16 +202,12 @@ int acpi_parse_art(acpi_handle handle, int *art_count, struct art **artp,

if (art->source) {
result = acpi_bus_get_device(art->source, &adev);
if (!result)
acpi_create_platform_device(adev);
else
if (result)
pr_warn("Failed to get source ACPI device\n");
}
if (art->target) {
result = acpi_bus_get_device(art->target, &adev);
if (!result)
acpi_create_platform_device(adev);
else
if (result)
pr_warn("Failed to get source ACPI device\n");
}
}
Expand Down
2 changes: 2 additions & 0 deletions drivers/thermal/int340x_thermal/processor_thermal_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,8 @@ static int proc_thermal_add(struct device *dev,
int ret;

adev = ACPI_COMPANION(dev);
if (!adev)
return -ENODEV;

status = acpi_evaluate_object(adev->handle, "PPCC", NULL, &buf);
if (ACPI_FAILURE(status))
Expand Down

0 comments on commit 4f7a42d

Please sign in to comment.