diff options
| author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2017-08-22 16:44:13 -0400 |
|---|---|---|
| committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2017-08-22 16:44:13 -0400 |
| commit | 9b40eebcd339c47921ff8b04c77af7c762b74216 (patch) | |
| tree | d9c83e571554f5524794343286144cf99e157e30 | |
| parent | 14ccee78fc82f5512908f4424f541549a5705b89 (diff) | |
ACPICA: Fix acpi_evaluate_object_typed()
Commit 2d2a954375a0 (ACPICA: Update two error messages to emit
control method name) causes acpi_evaluate_object_typed() to fail
if its pathname argument is NULL, but some callers of that function
in the kernel, particularly acpi_nondev_subnode_data_ok(), pass
NULL as pathname to it and expect it to work.
For this reason, make acpi_evaluate_object_typed() check if its
pathname argument is NULL and fall back to using the pathname of
its handle argument if that is the case.
Reported-by: Sakari Ailus <sakari.ailus@intel.com>
Tested-by: Yang, Hyungwoo <hyungwoo.yang@intel.com>
Fixes: 2d2a954375a0 (ACPICA: Update two error messages to emit control method name)
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
| -rw-r--r-- | drivers/acpi/acpica/nsxfeval.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/acpi/acpica/nsxfeval.c b/drivers/acpi/acpica/nsxfeval.c index 538c61677c10..783f4c838aee 100644 --- a/drivers/acpi/acpica/nsxfeval.c +++ b/drivers/acpi/acpica/nsxfeval.c | |||
| @@ -100,9 +100,13 @@ acpi_evaluate_object_typed(acpi_handle handle, | |||
| 100 | free_buffer_on_error = TRUE; | 100 | free_buffer_on_error = TRUE; |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | status = acpi_get_handle(handle, pathname, &target_handle); | 103 | if (pathname) { |
| 104 | if (ACPI_FAILURE(status)) { | 104 | status = acpi_get_handle(handle, pathname, &target_handle); |
| 105 | return_ACPI_STATUS(status); | 105 | if (ACPI_FAILURE(status)) { |
| 106 | return_ACPI_STATUS(status); | ||
| 107 | } | ||
| 108 | } else { | ||
| 109 | target_handle = handle; | ||
| 106 | } | 110 | } |
| 107 | 111 | ||
| 108 | full_pathname = acpi_ns_get_external_pathname(target_handle); | 112 | full_pathname = acpi_ns_get_external_pathname(target_handle); |
