diff options
| -rw-r--r-- | drivers/acpi/acpica/dswexec.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/acpi/acpica/dswexec.c b/drivers/acpi/acpica/dswexec.c index d555b374e314..6b0b5d08d97a 100644 --- a/drivers/acpi/acpica/dswexec.c +++ b/drivers/acpi/acpica/dswexec.c | |||
| @@ -300,10 +300,25 @@ acpi_ds_exec_begin_op(struct acpi_walk_state *walk_state, | |||
| 300 | * we must enter this object into the namespace. The created | 300 | * we must enter this object into the namespace. The created |
| 301 | * object is temporary and will be deleted upon completion of | 301 | * object is temporary and will be deleted upon completion of |
| 302 | * the execution of this method. | 302 | * the execution of this method. |
| 303 | * | ||
| 304 | * Note 10/2010: Except for the Scope() op. This opcode does | ||
| 305 | * not actually create a new object, it refers to an existing | ||
| 306 | * object. However, for Scope(), we want to indeed open a | ||
| 307 | * new scope. | ||
| 303 | */ | 308 | */ |
| 304 | status = acpi_ds_load2_begin_op(walk_state, NULL); | 309 | if (op->common.aml_opcode != AML_SCOPE_OP) { |
| 310 | status = | ||
| 311 | acpi_ds_load2_begin_op(walk_state, NULL); | ||
| 312 | } else { | ||
| 313 | status = | ||
| 314 | acpi_ds_scope_stack_push(op->named.node, | ||
| 315 | op->named.node-> | ||
| 316 | type, walk_state); | ||
| 317 | if (ACPI_FAILURE(status)) { | ||
| 318 | return_ACPI_STATUS(status); | ||
| 319 | } | ||
| 320 | } | ||
| 305 | } | 321 | } |
| 306 | |||
| 307 | break; | 322 | break; |
| 308 | 323 | ||
| 309 | case AML_CLASS_EXECUTE: | 324 | case AML_CLASS_EXECUTE: |
