diff options
Diffstat (limited to 'drivers/acpi/executer')
-rw-r--r-- | drivers/acpi/executer/exresolv.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/acpi/executer/exresolv.c b/drivers/acpi/executer/exresolv.c index 74ab220a5924..795ec8c7363c 100644 --- a/drivers/acpi/executer/exresolv.c +++ b/drivers/acpi/executer/exresolv.c | |||
@@ -194,6 +194,12 @@ acpi_ex_resolve_object_to_value(union acpi_operand_object **stack_ptr, | |||
194 | 194 | ||
195 | case ACPI_TYPE_PACKAGE: | 195 | case ACPI_TYPE_PACKAGE: |
196 | 196 | ||
197 | /* If method call - leave the Reference on the stack */ | ||
198 | |||
199 | if (walk_state->opcode == AML_INT_METHODCALL_OP) { | ||
200 | break; | ||
201 | } | ||
202 | |||
197 | obj_desc = *stack_desc->reference.where; | 203 | obj_desc = *stack_desc->reference.where; |
198 | if (obj_desc) { | 204 | if (obj_desc) { |
199 | /* | 205 | /* |
@@ -210,7 +216,7 @@ acpi_ex_resolve_object_to_value(union acpi_operand_object **stack_ptr, | |||
210 | * the package, can't dereference it | 216 | * the package, can't dereference it |
211 | */ | 217 | */ |
212 | ACPI_ERROR((AE_INFO, | 218 | ACPI_ERROR((AE_INFO, |
213 | "Attempt to deref an Index to NULL pkg element Idx=%p", | 219 | "Attempt to dereference an Index to NULL package element Idx=%p", |
214 | stack_desc)); | 220 | stack_desc)); |
215 | status = AE_AML_UNINITIALIZED_ELEMENT; | 221 | status = AE_AML_UNINITIALIZED_ELEMENT; |
216 | } | 222 | } |
@@ -221,7 +227,7 @@ acpi_ex_resolve_object_to_value(union acpi_operand_object **stack_ptr, | |||
221 | /* Invalid reference object */ | 227 | /* Invalid reference object */ |
222 | 228 | ||
223 | ACPI_ERROR((AE_INFO, | 229 | ACPI_ERROR((AE_INFO, |
224 | "Unknown TargetType %X in Index/Reference obj %p", | 230 | "Unknown TargetType %X in Index/Reference object %p", |
225 | stack_desc->reference.target_type, | 231 | stack_desc->reference.target_type, |
226 | stack_desc)); | 232 | stack_desc)); |
227 | status = AE_AML_INTERNAL; | 233 | status = AE_AML_INTERNAL; |