projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ACPICA: Dispatcher: Fix a mutex issue for method auto serialization
[cascardo/linux.git]
/
drivers
/
acpi
/
acpica
/
psparse.c
diff --git
a/drivers/acpi/acpica/psparse.c
b/drivers/acpi/acpica/psparse.c
index
0a23897
..
1ce26d9
100644
(file)
--- a/
drivers/acpi/acpica/psparse.c
+++ b/
drivers/acpi/acpica/psparse.c
@@
-537,9
+537,11
@@
acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
/* Either the method parse or actual execution failed */
/* Either the method parse or actual execution failed */
+ acpi_ex_exit_interpreter();
ACPI_ERROR_METHOD("Method parse/execution failed",
walk_state->method_node, NULL,
status);
ACPI_ERROR_METHOD("Method parse/execution failed",
walk_state->method_node, NULL,
status);
+ acpi_ex_enter_interpreter();
/* Check for possible multi-thread reentrancy problem */
/* Check for possible multi-thread reentrancy problem */
@@
-571,7
+573,9
@@
acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
* cleanup to do
*/
if (((walk_state->parse_flags & ACPI_PARSE_MODE_MASK) ==
* cleanup to do
*/
if (((walk_state->parse_flags & ACPI_PARSE_MODE_MASK) ==
- ACPI_PARSE_EXECUTE) || (ACPI_FAILURE(status))) {
+ ACPI_PARSE_EXECUTE &&
+ !(walk_state->parse_flags & ACPI_PARSE_MODULE_LEVEL)) ||
+ (ACPI_FAILURE(status))) {
acpi_ds_terminate_control_method(walk_state->
method_desc,
walk_state);
acpi_ds_terminate_control_method(walk_state->
method_desc,
walk_state);