ACPICA: Fix race condition with AcpiWalkNamespace.
Fixed a problem with a possible race condition between threads executing AcpiWalkNamespace and the AML interpreter. This condition was removed by modifying AcpiWalkNamespace to (by default) ignore all temporary namespace entries created during any concurrent control method execution Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
@@ -226,6 +226,12 @@ acpi_ns_dump_one_object(acpi_handle obj_handle,
|
||||
obj_desc = acpi_ns_get_attached_object(this_node);
|
||||
acpi_dbg_level = dbg_level;
|
||||
|
||||
/* Temp nodes are those nodes created by a control method */
|
||||
|
||||
if (this_node->flags & ANOBJ_TEMPORARY) {
|
||||
acpi_os_printf("(T) ");
|
||||
}
|
||||
|
||||
switch (info->display_type & ACPI_DISPLAY_MASK) {
|
||||
case ACPI_DISPLAY_SUMMARY:
|
||||
|
||||
@@ -623,7 +629,8 @@ acpi_ns_dump_objects(acpi_object_type type,
|
||||
info.display_type = display_type;
|
||||
|
||||
(void)acpi_ns_walk_namespace(type, start_handle, max_depth,
|
||||
ACPI_NS_WALK_NO_UNLOCK,
|
||||
ACPI_NS_WALK_NO_UNLOCK |
|
||||
ACPI_NS_WALK_TEMP_NODES,
|
||||
acpi_ns_dump_one_object, (void *)&info,
|
||||
NULL);
|
||||
}
|
||||
|
Reference in New Issue
Block a user