From 927a6abf023b1a8c6940880802fc17026be6a351 Mon Sep 17 00:00:00 2001 From: Bob Moore Date: Mon, 5 Nov 2018 09:43:54 -0800 Subject: ACPICA: iASL: Enhance error detection Enhance error detection by validating that all name_seg elements within a name_path actually exist. The previous behavior was spotty at best, and such errors could be improperly ignored at compile time (never at runtime, however). There are two new error messages. Signed-off-by: Bob Moore Signed-off-by: Erik Schmauss Signed-off-by: Rafael J. Wysocki --- drivers/acpi/acpica/psloop.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'drivers/acpi/acpica/psloop.c') diff --git a/drivers/acpi/acpica/psloop.c b/drivers/acpi/acpica/psloop.c index 0fa01c9e353e..60ece8e48667 100644 --- a/drivers/acpi/acpica/psloop.c +++ b/drivers/acpi/acpica/psloop.c @@ -508,7 +508,8 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state) */ if ((walk_state-> parse_flags & ACPI_PARSE_MODULE_LEVEL) - && status == AE_ALREADY_EXISTS) { + && ((status == AE_ALREADY_EXISTS) + || (status == AE_NOT_FOUND))) { status = AE_OK; } if (status == AE_CTRL_PARSE_CONTINUE) { @@ -537,10 +538,7 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state) * the scope op because the parse failure indicates that * the device may not exist. */ - ACPI_ERROR((AE_INFO, - "Skip parsing opcode %s", - acpi_ps_get_opcode_name - (walk_state->opcode))); + ACPI_INFO(("Skipping parse of AML opcode: %s (0x%4.4X)", acpi_ps_get_opcode_name(walk_state->opcode), walk_state->opcode)); /* * Determine the opcode length before skipping the opcode. -- cgit v1.2.3-55-g7522 From 178a0f6379698a4e23ad077c9a71dc84ee69d3a9 Mon Sep 17 00:00:00 2001 From: Erik Schmauss Date: Thu, 13 Dec 2018 12:30:27 -0800 Subject: ACPICA: Remove defines that use deprecated flag This commit removes the use of ACPI_NO_METHOD_EXECUTE flag Signed-off-by: Erik Schmauss Signed-off-by: Rafael J. Wysocki --- drivers/acpi/acpica/acglobal.h | 4 ---- drivers/acpi/acpica/dsobject.c | 11 ----------- drivers/acpi/acpica/dsutils.c | 2 -- drivers/acpi/acpica/dswload.c | 6 +----- drivers/acpi/acpica/dswload2.c | 7 ------- drivers/acpi/acpica/dswstate.c | 2 +- drivers/acpi/acpica/excreate.c | 2 -- drivers/acpi/acpica/exutils.c | 3 --- drivers/acpi/acpica/nsload.c | 2 -- drivers/acpi/acpica/psloop.c | 2 +- drivers/acpi/acpica/utglobal.c | 3 --- 11 files changed, 3 insertions(+), 41 deletions(-) (limited to 'drivers/acpi/acpica/psloop.c') diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h index 1e6204518496..87d6eb01beaf 100644 --- a/drivers/acpi/acpica/acglobal.h +++ b/drivers/acpi/acpica/acglobal.h @@ -172,11 +172,7 @@ ACPI_GLOBAL(u8, acpi_gbl_disable_mem_tracking); * ****************************************************************************/ -#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) #define NUM_PREDEFINED_NAMES 10 -#else -#define NUM_PREDEFINED_NAMES 9 -#endif ACPI_GLOBAL(struct acpi_namespace_node, acpi_gbl_root_node_struct); ACPI_GLOBAL(struct acpi_namespace_node *, acpi_gbl_root_node); diff --git a/drivers/acpi/acpica/dsobject.c b/drivers/acpi/acpica/dsobject.c index 6992c8d5ab43..6a9cc613adaa 100644 --- a/drivers/acpi/acpica/dsobject.c +++ b/drivers/acpi/acpica/dsobject.c @@ -18,7 +18,6 @@ #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME("dsobject") -#ifndef ACPI_NO_METHOD_EXECUTION /******************************************************************************* * * FUNCTION: acpi_ds_build_internal_object @@ -299,8 +298,6 @@ acpi_ds_create_node(struct acpi_walk_state *walk_state, return_ACPI_STATUS(status); } -#endif /* ACPI_NO_METHOD_EXECUTION */ - /******************************************************************************* * * FUNCTION: acpi_ds_init_object_from_op @@ -404,9 +401,7 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state, /* Truncate value if we are executing from a 32-bit ACPI table */ -#ifndef ACPI_NO_METHOD_EXECUTION (void)acpi_ex_truncate_for32bit_table(obj_desc); -#endif break; case AML_REVISION_OP: @@ -428,7 +423,6 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state, obj_desc->integer.value = op->common.value.integer; -#ifndef ACPI_NO_METHOD_EXECUTION if (acpi_ex_truncate_for32bit_table(obj_desc)) { /* Warn if we found a 64-bit constant in a 32-bit table */ @@ -439,7 +433,6 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state, value.integer), (u32)obj_desc->integer.value)); } -#endif break; default: @@ -477,7 +470,6 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state, ((u32)opcode) - AML_FIRST_LOCAL_OP; obj_desc->reference.class = ACPI_REFCLASS_LOCAL; -#ifndef ACPI_NO_METHOD_EXECUTION status = acpi_ds_method_data_get_node(ACPI_REFCLASS_LOCAL, obj_desc->reference. @@ -487,7 +479,6 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state, acpi_namespace_node, &obj_desc->reference. object)); -#endif break; case AML_TYPE_METHOD_ARGUMENT: @@ -498,7 +489,6 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state, ((u32)opcode) - AML_FIRST_ARG_OP; obj_desc->reference.class = ACPI_REFCLASS_ARG; -#ifndef ACPI_NO_METHOD_EXECUTION status = acpi_ds_method_data_get_node(ACPI_REFCLASS_ARG, obj_desc-> reference.value, @@ -509,7 +499,6 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state, &obj_desc-> reference. object)); -#endif break; default: /* Object name or Debug object */ diff --git a/drivers/acpi/acpica/dsutils.c b/drivers/acpi/acpica/dsutils.c index 8d1b75400515..fb9ed5e1da89 100644 --- a/drivers/acpi/acpica/dsutils.c +++ b/drivers/acpi/acpica/dsutils.c @@ -57,7 +57,6 @@ void acpi_ds_clear_implicit_return(struct acpi_walk_state *walk_state) } } -#ifndef ACPI_NO_METHOD_EXECUTION /******************************************************************************* * * FUNCTION: acpi_ds_do_implicit_return @@ -401,7 +400,6 @@ void acpi_ds_clear_operands(struct acpi_walk_state *walk_state) walk_state->num_operands = 0; return_VOID; } -#endif /******************************************************************************* * diff --git a/drivers/acpi/acpica/dswload.c b/drivers/acpi/acpica/dswload.c index d06c41446282..e2ef09643d50 100644 --- a/drivers/acpi/acpica/dswload.c +++ b/drivers/acpi/acpica/dswload.c @@ -73,12 +73,10 @@ acpi_ds_init_callbacks(struct acpi_walk_state *walk_state, u32 pass_number) /* Execution pass */ -#ifndef ACPI_NO_METHOD_EXECUTION walk_state->parse_flags |= ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE; walk_state->descending_callback = acpi_ds_exec_begin_op; walk_state->ascending_callback = acpi_ds_exec_end_op; -#endif break; default: @@ -364,7 +362,7 @@ acpi_ds_load1_begin_op(struct acpi_walk_state *walk_state, /* Initialize the op */ -#if (defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)) +#ifdef ACPI_CONSTANT_EVAL_ONLY op->named.path = path; #endif @@ -422,7 +420,6 @@ acpi_status acpi_ds_load1_end_op(struct acpi_walk_state *walk_state) object_type = walk_state->op_info->object_type; -#ifndef ACPI_NO_METHOD_EXECUTION if (walk_state->op_info->flags & AML_FIELD) { /* * If we are executing a method, do not create any namespace objects @@ -466,7 +463,6 @@ acpi_status acpi_ds_load1_end_op(struct acpi_walk_state *walk_state) } } } -#endif if (op->common.aml_opcode == AML_NAME_OP) { diff --git a/drivers/acpi/acpica/dswload2.c b/drivers/acpi/acpica/dswload2.c index fa38bb3009d5..9a309f5c4de8 100644 --- a/drivers/acpi/acpica/dswload2.c +++ b/drivers/acpi/acpica/dswload2.c @@ -371,10 +371,8 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) struct acpi_namespace_node *node; union acpi_parse_object *arg; struct acpi_namespace_node *new_node; -#ifndef ACPI_NO_METHOD_EXECUTION u32 i; u8 region_space; -#endif ACPI_FUNCTION_TRACE(ds_load2_end_op); @@ -461,7 +459,6 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) arg = op->common.value.arg; switch (walk_state->op_info->type) { -#ifndef ACPI_NO_METHOD_EXECUTION case AML_TYPE_CREATE_FIELD: /* @@ -558,12 +555,10 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) } break; -#endif /* ACPI_NO_METHOD_EXECUTION */ case AML_TYPE_NAMED_COMPLEX: switch (op->common.aml_opcode) { -#ifndef ACPI_NO_METHOD_EXECUTION case AML_REGION_OP: case AML_DATA_REGION_OP: @@ -651,8 +646,6 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) } break; -#endif /* ACPI_NO_METHOD_EXECUTION */ - default: /* All NAMED_COMPLEX opcodes must be handled above */ diff --git a/drivers/acpi/acpica/dswstate.c b/drivers/acpi/acpica/dswstate.c index c879380e5ce1..4c1ec202d5ab 100644 --- a/drivers/acpi/acpica/dswstate.c +++ b/drivers/acpi/acpica/dswstate.c @@ -530,7 +530,7 @@ struct acpi_walk_state *acpi_ds_create_walk_state(acpi_owner_id owner_id, /* Init the method args/local */ -#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY)) +#ifndef ACPI_CONSTANT_EVAL_ONLY acpi_ds_method_data_init(walk_state); #endif diff --git a/drivers/acpi/acpica/excreate.c b/drivers/acpi/acpica/excreate.c index e49fa3c1321a..3304c6b1e8a7 100644 --- a/drivers/acpi/acpica/excreate.c +++ b/drivers/acpi/acpica/excreate.c @@ -15,7 +15,6 @@ #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME("excreate") -#ifndef ACPI_NO_METHOD_EXECUTION /******************************************************************************* * * FUNCTION: acpi_ex_create_alias @@ -390,7 +389,6 @@ acpi_status acpi_ex_create_power_resource(struct acpi_walk_state *walk_state) acpi_ut_remove_reference(obj_desc); return_ACPI_STATUS(status); } -#endif /******************************************************************************* * diff --git a/drivers/acpi/acpica/exutils.c b/drivers/acpi/acpica/exutils.c index 6ce307d5ce2a..bd22e27adf9b 100644 --- a/drivers/acpi/acpica/exutils.c +++ b/drivers/acpi/acpica/exutils.c @@ -34,7 +34,6 @@ ACPI_MODULE_NAME("exutils") /* Local prototypes */ static u32 acpi_ex_digits_needed(u64 value, u32 base); -#ifndef ACPI_NO_METHOD_EXECUTION /******************************************************************************* * * FUNCTION: acpi_ex_enter_interpreter @@ -409,5 +408,3 @@ u8 acpi_is_valid_space_id(u8 space_id) return (TRUE); } - -#endif diff --git a/drivers/acpi/acpica/nsload.c b/drivers/acpi/acpica/nsload.c index e291bb8cd369..04bc73e82aed 100644 --- a/drivers/acpi/acpica/nsload.c +++ b/drivers/acpi/acpica/nsload.c @@ -24,7 +24,6 @@ acpi_status acpi_ns_unload_namespace(acpi_handle handle); static acpi_status acpi_ns_delete_subtree(acpi_handle start_handle); #endif -#ifndef ACPI_NO_METHOD_EXECUTION /******************************************************************************* * * FUNCTION: acpi_ns_load_table @@ -297,4 +296,3 @@ acpi_status acpi_ns_unload_namespace(acpi_handle handle) return_ACPI_STATUS(status); } #endif -#endif diff --git a/drivers/acpi/acpica/psloop.c b/drivers/acpi/acpica/psloop.c index 60ece8e48667..e00d1af6fa80 100644 --- a/drivers/acpi/acpica/psloop.c +++ b/drivers/acpi/acpica/psloop.c @@ -428,7 +428,7 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state) parser_state = &walk_state->parser_state; walk_state->arg_types = 0; -#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY)) +#ifndef ACPI_CONSTANT_EVAL_ONLY if (walk_state->walk_type & ACPI_WALK_METHOD_RESTART) { diff --git a/drivers/acpi/acpica/utglobal.c b/drivers/acpi/acpica/utglobal.c index fa674e9b0e62..f8c5b49344df 100644 --- a/drivers/acpi/acpica/utglobal.c +++ b/drivers/acpi/acpica/utglobal.c @@ -83,10 +83,7 @@ const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = { {"_REV", ACPI_TYPE_INTEGER, ACPI_CAST_PTR(char, 2)}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_GL_", ACPI_TYPE_MUTEX, ACPI_CAST_PTR(char, 1)}, - -#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) {"_OSI", ACPI_TYPE_METHOD, ACPI_CAST_PTR(char, 1)}, -#endif /* Table terminator */ -- cgit v1.2.3-55-g7522