diff options
author | Bob Moore <robert.moore@intel.com> | 2011-01-12 02:13:31 +0100 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2011-01-19 05:47:55 +0100 |
commit | 672af843abfc9a41c7ec792722e04b6c68a3cfea (patch) | |
tree | 3aeb44daa826c02abb8621b01ffad47565f914bc /drivers | |
parent | ACPICA: Fix namespace race condition (diff) | |
download | linux-672af843abfc9a41c7ec792722e04b6c68a3cfea.tar.xz linux-672af843abfc9a41c7ec792722e04b6c68a3cfea.zip |
ACPICA: Debugger: Lock namespace for duration of a namespace dump
Prevents issues if the namespace is changing underneath the
debugger. Especially temporary nodes, since the debugger displays
these also.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Reviewed-by: Rafael Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/acpi/acpica/nsdump.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/nsdump.c b/drivers/acpi/acpica/nsdump.c index a54dc39e304b..82693c3eb257 100644 --- a/drivers/acpi/acpica/nsdump.c +++ b/drivers/acpi/acpica/nsdump.c @@ -624,9 +624,22 @@ acpi_ns_dump_objects(acpi_object_type type, acpi_owner_id owner_id, acpi_handle start_handle) { struct acpi_walk_info info; + acpi_status status; ACPI_FUNCTION_ENTRY(); + /* + * Just lock the entire namespace for the duration of the dump. + * We don't want any changes to the namespace during this time, + * especially the temporary nodes since we are going to display + * them also. + */ + status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE(status)) { + acpi_os_printf("Could not acquire namespace mutex\n"); + return; + } + info.debug_level = ACPI_LV_TABLES; info.owner_id = owner_id; info.display_type = display_type; @@ -636,6 +649,8 @@ acpi_ns_dump_objects(acpi_object_type type, ACPI_NS_WALK_TEMP_NODES, acpi_ns_dump_one_object, NULL, (void *)&info, NULL); + + (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE); } #endif /* ACPI_FUTURE_USAGE */ |