diff options
author | Dmitry Torokhov <dtor@insightbb.com> | 2006-08-23 23:18:06 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2006-10-14 01:54:21 -0400 |
commit | 786f18c666d7202a86a8aa42a98783b115fe8739 (patch) | |
tree | e5c304ec8a0caf57b8b7d87a6e73cfa65e17d53d /drivers | |
parent | b4bd8c66435a8cdf8c90334fb3b517a23ff2ab95 (diff) |
ACPI: fix potential OOPS in power driver with CONFIG_ACPI_DEBUG
device was set to null and used before set in a debug printk
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/acpi/power.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c index fec225d1b6b7..fe67a8af520e 100644 --- a/drivers/acpi/power.c +++ b/drivers/acpi/power.c | |||
@@ -216,10 +216,8 @@ static int acpi_power_off_device(acpi_handle handle) | |||
216 | { | 216 | { |
217 | int result = 0; | 217 | int result = 0; |
218 | acpi_status status = AE_OK; | 218 | acpi_status status = AE_OK; |
219 | struct acpi_device *device = NULL; | ||
220 | struct acpi_power_resource *resource = NULL; | 219 | struct acpi_power_resource *resource = NULL; |
221 | 220 | ||
222 | |||
223 | result = acpi_power_get_context(handle, &resource); | 221 | result = acpi_power_get_context(handle, &resource); |
224 | if (result) | 222 | if (result) |
225 | return result; | 223 | return result; |
@@ -230,13 +228,13 @@ static int acpi_power_off_device(acpi_handle handle) | |||
230 | if (resource->references) { | 228 | if (resource->references) { |
231 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | 229 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
232 | "Resource [%s] is still in use, dereferencing\n", | 230 | "Resource [%s] is still in use, dereferencing\n", |
233 | device->pnp.bus_id)); | 231 | resource->device->pnp.bus_id)); |
234 | return 0; | 232 | return 0; |
235 | } | 233 | } |
236 | 234 | ||
237 | if (resource->state == ACPI_POWER_RESOURCE_STATE_OFF) { | 235 | if (resource->state == ACPI_POWER_RESOURCE_STATE_OFF) { |
238 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Resource [%s] already off\n", | 236 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Resource [%s] already off\n", |
239 | device->pnp.bus_id)); | 237 | resource->device->pnp.bus_id)); |
240 | return 0; | 238 | return 0; |
241 | } | 239 | } |
242 | 240 | ||
@@ -251,8 +249,7 @@ static int acpi_power_off_device(acpi_handle handle) | |||
251 | return -ENOEXEC; | 249 | return -ENOEXEC; |
252 | 250 | ||
253 | /* Update the power resource's _device_ power state */ | 251 | /* Update the power resource's _device_ power state */ |
254 | device = resource->device; | 252 | resource->device->power.state = ACPI_STATE_D3; |
255 | device->power.state = ACPI_STATE_D3; | ||
256 | 253 | ||
257 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Resource [%s] turned off\n", | 254 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Resource [%s] turned off\n", |
258 | resource->name)); | 255 | resource->name)); |