aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/parser/psparse.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2008-04-10 11:06:36 -0400
committerLen Brown <len.brown@intel.com>2008-04-22 14:29:20 -0400
commit773069d48030e670cf2032a13ddf16a2e0034df3 (patch)
tree2f45fd7e90600d26c08c641c75059eb0b15d6dcd /drivers/acpi/parser/psparse.c
parent4b119e21d0c66c22e8ca03df05d9de623d0eb50f (diff)
ACPICA: Several fixes for internal method result stack
fixes STACK_OVERFLOW exception on nested method calls. internal bugzilla 262 and 275. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/parser/psparse.c')
-rw-r--r--drivers/acpi/parser/psparse.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/drivers/acpi/parser/psparse.c b/drivers/acpi/parser/psparse.c
index 5d63f48e56b5..ce3139a74f95 100644
--- a/drivers/acpi/parser/psparse.c
+++ b/drivers/acpi/parser/psparse.c
@@ -349,19 +349,13 @@ acpi_ps_next_parse_state(struct acpi_walk_state *walk_state,
349 349
350 parser_state->aml = walk_state->aml_last_while; 350 parser_state->aml = walk_state->aml_last_while;
351 walk_state->control_state->common.value = FALSE; 351 walk_state->control_state->common.value = FALSE;
352 status = acpi_ds_result_stack_pop(walk_state); 352 status = AE_CTRL_BREAK;
353 if (ACPI_SUCCESS(status)) {
354 status = AE_CTRL_BREAK;
355 }
356 break; 353 break;
357 354
358 case AE_CTRL_CONTINUE: 355 case AE_CTRL_CONTINUE:
359 356
360 parser_state->aml = walk_state->aml_last_while; 357 parser_state->aml = walk_state->aml_last_while;
361 status = acpi_ds_result_stack_pop(walk_state); 358 status = AE_CTRL_CONTINUE;
362 if (ACPI_SUCCESS(status)) {
363 status = AE_CTRL_CONTINUE;
364 }
365 break; 359 break;
366 360
367 case AE_CTRL_PENDING: 361 case AE_CTRL_PENDING:
@@ -383,10 +377,7 @@ acpi_ps_next_parse_state(struct acpi_walk_state *walk_state,
383 * Just close out this package 377 * Just close out this package
384 */ 378 */
385 parser_state->aml = acpi_ps_get_next_package_end(parser_state); 379 parser_state->aml = acpi_ps_get_next_package_end(parser_state);
386 status = acpi_ds_result_stack_pop(walk_state); 380 status = AE_CTRL_PENDING;
387 if (ACPI_SUCCESS(status)) {
388 status = AE_CTRL_PENDING;
389 }
390 break; 381 break;
391 382
392 case AE_CTRL_FALSE: 383 case AE_CTRL_FALSE: