diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-07-11 10:18:18 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-07-11 10:18:18 -0400 |
commit | ffd8d61845c90cea87bc3efa58ddff1b14dea8f2 (patch) | |
tree | d1b9a08a019f5e24c155eb7d1be0570aa68515ca | |
parent | e8807e4470e6b4230b24c537d7179a945f0f7c40 (diff) |
Revert "ACPICA: Namespace: Fix deadlock triggered by MLC support in dynamic table loading"
Revert commit 2f38b1b16d92 (ACPICA: Namespace: Fix deadlock triggered by
MLC support in dynamic table loading) that attempted to fix a deadlock
issue introduced by a previous commit, but it led to a lock ordering
inconsistency that caused further problems to appear.
Fixes: 2f38b1b16d92 (ACPICA: Namespace: Fix deadlock triggered by MLC support in dynamic table loading)
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | drivers/acpi/acpica/exconfig.c | 2 | ||||
-rw-r--r-- | drivers/acpi/acpica/nsparse.c | 9 |
2 files changed, 2 insertions, 9 deletions
diff --git a/drivers/acpi/acpica/exconfig.c b/drivers/acpi/acpica/exconfig.c index 21932d640a41..a1d177d58254 100644 --- a/drivers/acpi/acpica/exconfig.c +++ b/drivers/acpi/acpica/exconfig.c | |||
@@ -108,9 +108,7 @@ acpi_ex_add_table(u32 table_index, | |||
108 | 108 | ||
109 | /* Add the table to the namespace */ | 109 | /* Add the table to the namespace */ |
110 | 110 | ||
111 | acpi_ex_exit_interpreter(); | ||
112 | status = acpi_ns_load_table(table_index, parent_node); | 111 | status = acpi_ns_load_table(table_index, parent_node); |
113 | acpi_ex_enter_interpreter(); | ||
114 | if (ACPI_FAILURE(status)) { | 112 | if (ACPI_FAILURE(status)) { |
115 | acpi_ut_remove_reference(obj_desc); | 113 | acpi_ut_remove_reference(obj_desc); |
116 | *ddb_handle = NULL; | 114 | *ddb_handle = NULL; |
diff --git a/drivers/acpi/acpica/nsparse.c b/drivers/acpi/acpica/nsparse.c index 1783cd7e1446..f631a47724f0 100644 --- a/drivers/acpi/acpica/nsparse.c +++ b/drivers/acpi/acpica/nsparse.c | |||
@@ -47,7 +47,6 @@ | |||
47 | #include "acparser.h" | 47 | #include "acparser.h" |
48 | #include "acdispat.h" | 48 | #include "acdispat.h" |
49 | #include "actables.h" | 49 | #include "actables.h" |
50 | #include "acinterp.h" | ||
51 | 50 | ||
52 | #define _COMPONENT ACPI_NAMESPACE | 51 | #define _COMPONENT ACPI_NAMESPACE |
53 | ACPI_MODULE_NAME("nsparse") | 52 | ACPI_MODULE_NAME("nsparse") |
@@ -171,8 +170,6 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node) | |||
171 | 170 | ||
172 | ACPI_FUNCTION_TRACE(ns_parse_table); | 171 | ACPI_FUNCTION_TRACE(ns_parse_table); |
173 | 172 | ||
174 | acpi_ex_enter_interpreter(); | ||
175 | |||
176 | /* | 173 | /* |
177 | * AML Parse, pass 1 | 174 | * AML Parse, pass 1 |
178 | * | 175 | * |
@@ -188,7 +185,7 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node) | |||
188 | status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1, | 185 | status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1, |
189 | table_index, start_node); | 186 | table_index, start_node); |
190 | if (ACPI_FAILURE(status)) { | 187 | if (ACPI_FAILURE(status)) { |
191 | goto error_exit; | 188 | return_ACPI_STATUS(status); |
192 | } | 189 | } |
193 | 190 | ||
194 | /* | 191 | /* |
@@ -204,10 +201,8 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node) | |||
204 | status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2, | 201 | status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2, |
205 | table_index, start_node); | 202 | table_index, start_node); |
206 | if (ACPI_FAILURE(status)) { | 203 | if (ACPI_FAILURE(status)) { |
207 | goto error_exit; | 204 | return_ACPI_STATUS(status); |
208 | } | 205 | } |
209 | 206 | ||
210 | error_exit: | ||
211 | acpi_ex_exit_interpreter(); | ||
212 | return_ACPI_STATUS(status); | 207 | return_ACPI_STATUS(status); |
213 | } | 208 | } |