ACPI / Sleep: Free NVS copy if suspending of devices fails
authorRafael J. Wysocki <rjw@sisk.pl>
Tue, 6 Jul 2010 22:28:35 +0000 (18:28 -0400)
committerLen Brown <len.brown@intel.com>
Tue, 6 Jul 2010 22:28:35 +0000 (18:28 -0400)
If suspending of devices fails or system suspend is tested in the
"devices" mode, the memory allocated for storing a copy of the ACPI
NVS area will not be freed, because acpi_pm_finish() is not called
in that case.  Fix this by moving the suspend_nvs_free() call to
acpi_pm_end().

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/sleep.c

index 5b7c52e4a00f09001becab5df101e7e5fa4dabc8..da68ed24f4c552c467e9a06b51e7a36d62ff5a5a 100644 (file)
@@ -145,7 +145,6 @@ static void acpi_pm_finish(void)
 {
        u32 acpi_state = acpi_target_sleep_state;
 
-       suspend_nvs_free();
        acpi_ec_unblock_transactions();
 
        if (acpi_state == ACPI_STATE_S0)
@@ -167,6 +166,7 @@ static void acpi_pm_finish(void)
  */
 static void acpi_pm_end(void)
 {
+       suspend_nvs_free();
        /*
         * This is necessary in case acpi_pm_finish() is not called during a
         * failing transition to a sleep state.