]> err.no Git - linux-2.6/blobdiff - drivers/acpi/bus.c
[PATCH] vt: fix possible memory corruption in complement_pos
[linux-2.6] / drivers / acpi / bus.c
index 4edff17385791ce10070529414625267aed2d59b..d77c2307883c65efbf57d34b4dec54799d0a2337 100644 (file)
@@ -212,6 +212,12 @@ acpi_bus_set_power (
                ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Device is not power manageable\n"));
                return_VALUE(-ENODEV);
        }
+       /*
+        * Get device's current power state if it's unknown
+        * This means device power state isn't initialized or previous setting failed
+        */
+       if (device->power.state == ACPI_STATE_UNKNOWN)
+               acpi_bus_get_power(device->handle, &device->power.state);
        if (state == device->power.state) {
                ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device is already at D%d\n", state));
                return_VALUE(0);
@@ -231,7 +237,7 @@ acpi_bus_set_power (
         * On transitions to a high-powered state we first apply power (via
         * power resources) then evalute _PSx.  Conversly for transitions to
         * a lower-powered state.
-        */ 
+        */
        if (state < device->power.state) {
                if (device->power.flags.power_resources) {
                        result = acpi_power_transition(device, state);