diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
index 792a8309d074a178303eb4c3d467c68a382c760b..4c9c2fb5d98f9a14a67e8618b44dc6f2c642887b 100644
--- a/drivers/acpi/power.c
+++ b/drivers/acpi/power.c
@@ -213,11 +213,13 @@ static int acpi_power_on(acpi_handle handle)
 				  resource->name));
 	} else {
 		result = __acpi_power_on(resource);
+		if (result)
+			resource->ref_count--;
 	}
 
 	mutex_unlock(&resource->resource_lock);
 
-	return 0;
+	return result;
 }
 
 static int acpi_power_off_device(acpi_handle handle)