diff options
author | Lv Zheng <lv.zheng@intel.com> | 2015-10-19 10:25:42 +0800 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2015-10-22 02:05:05 +0200 |
commit | 086ab742ac97b45ee64507b32b3d1ecbdbc56b39 (patch) | |
tree | ee5fec88e0766e3452f6b21ca20c2c0cfc0a26a4 /drivers/acpi/acpica/utinit.c | |
parent | af08f9cc5073eee875016d28730c99ec86da4198 (diff) |
ACPICA: Debugger: Fix "terminate" command by cleaning up subsystem shutdown logic
ACPICA commit 7e823714911480be47e310fb1b3590d289b9fd99
Segmentation fault can be seen for executing the "terminate" command. This
is because acpi_ut_subsystem_shutdown() is errnously called multiple times.
This patch cleans up acpi_ut_subsystem_shutdown() logics to fix this
issue. Lv Zheng.
Link: https://github.com/acpica/acpica/commit/7e823714
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/utinit.c')
-rw-r--r-- | drivers/acpi/acpica/utinit.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/utinit.c b/drivers/acpi/acpica/utinit.c index d8699df8914c..ccd0745f011e 100644 --- a/drivers/acpi/acpica/utinit.c +++ b/drivers/acpi/acpica/utinit.c @@ -282,6 +282,19 @@ void acpi_ut_subsystem_shutdown(void) { ACPI_FUNCTION_TRACE(ut_subsystem_shutdown); + /* Just exit if subsystem is already shutdown */ + + if (acpi_gbl_shutdown) { + ACPI_ERROR((AE_INFO, "ACPI Subsystem is already terminated")); + return_VOID; + } + + /* Subsystem appears active, go ahead and shut it down */ + + acpi_gbl_shutdown = TRUE; + acpi_gbl_startup_flags = 0; + ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Shutting down ACPI Subsystem\n")); + #ifndef ACPI_ASL_COMPILER /* Close the acpi_event Handling */ |