diff options
Diffstat (limited to 'drivers/pci/hotplug/acpiphp_ibm.c')
| -rw-r--r-- | drivers/pci/hotplug/acpiphp_ibm.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/drivers/pci/hotplug/acpiphp_ibm.c b/drivers/pci/hotplug/acpiphp_ibm.c index 750ebd7a4c10..b0a22b92717e 100644 --- a/drivers/pci/hotplug/acpiphp_ibm.c +++ b/drivers/pci/hotplug/acpiphp_ibm.c | |||
| @@ -395,33 +395,34 @@ static acpi_status __init ibm_find_acpi_device(acpi_handle handle, | |||
| 395 | { | 395 | { |
| 396 | acpi_handle *phandle = (acpi_handle *)context; | 396 | acpi_handle *phandle = (acpi_handle *)context; |
| 397 | acpi_status status; | 397 | acpi_status status; |
| 398 | struct acpi_device_info info; | 398 | struct acpi_device_info *info; |
| 399 | struct acpi_buffer info_buffer = { | 399 | struct acpi_buffer info_buffer = { ACPI_ALLOCATE_BUFFER, NULL }; |
| 400 | .length = sizeof(struct acpi_device_info), | 400 | int retval = 0; |
| 401 | .pointer = &info, | ||
| 402 | }; | ||
| 403 | 401 | ||
| 404 | status = acpi_get_object_info(handle, &info_buffer); | 402 | status = acpi_get_object_info(handle, &info_buffer); |
| 405 | if (ACPI_FAILURE(status)) { | 403 | if (ACPI_FAILURE(status)) { |
| 406 | err("%s: Failed to get device information\n", __FUNCTION__); | 404 | err("%s: Failed to get device information status=0x%x\n", |
| 407 | return 0; | 405 | __FUNCTION__, status); |
| 406 | return retval; | ||
| 408 | } | 407 | } |
| 409 | info.hardware_id.value[sizeof(info.hardware_id.value) - 1] = '\0'; | 408 | info = info_buffer.pointer; |
| 410 | 409 | info->hardware_id.value[sizeof(info->hardware_id.value) - 1] = '\0'; | |
| 411 | if (info.current_status && (info.valid & ACPI_VALID_HID) && | 410 | |
| 412 | (!strcmp(info.hardware_id.value, IBM_HARDWARE_ID1) || | 411 | if (info->current_status && (info->valid & ACPI_VALID_HID) && |
| 413 | !strcmp(info.hardware_id.value, IBM_HARDWARE_ID2))) { | 412 | (!strcmp(info->hardware_id.value, IBM_HARDWARE_ID1) || |
| 414 | dbg("found hardware: %s, handle: %p\n", info.hardware_id.value, | 413 | !strcmp(info->hardware_id.value, IBM_HARDWARE_ID2))) { |
| 415 | handle); | 414 | dbg("found hardware: %s, handle: %p\n", |
| 415 | info->hardware_id.value, handle); | ||
| 416 | *phandle = handle; | 416 | *phandle = handle; |
| 417 | /* returning non-zero causes the search to stop | 417 | /* returning non-zero causes the search to stop |
| 418 | * and returns this value to the caller of | 418 | * and returns this value to the caller of |
| 419 | * acpi_walk_namespace, but it also causes some warnings | 419 | * acpi_walk_namespace, but it also causes some warnings |
| 420 | * in the acpi debug code to print... | 420 | * in the acpi debug code to print... |
| 421 | */ | 421 | */ |
| 422 | return FOUND_APCI; | 422 | retval = FOUND_APCI; |
| 423 | } | 423 | } |
| 424 | return 0; | 424 | kfree(info); |
| 425 | return retval; | ||
| 425 | } | 426 | } |
| 426 | 427 | ||
| 427 | static int __init ibm_acpiphp_init(void) | 428 | static int __init ibm_acpiphp_init(void) |
