diff options
author | Andrew Patterson <andrew.patterson@hp.com> | 2008-01-22 19:18:22 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-01-23 14:43:44 -0500 |
commit | 02f8a8586574350a1f3c2cee79cbc0faf630961d (patch) | |
tree | 9f8f3d5111f656deb8f64a97b5d55d0711c9216c | |
parent | cbd9c883696da72b2b1f03f909dbacc04bbf8b58 (diff) |
ACPI: Check for any matching CID when walking namespace.
The callback function acpi_ns_get_device_callback called from
acpi_get_devices() will check CID's if the HID does not match. This code
has a bug where it requires that all CIDs match the HID. Changed the code
so that any CID match will do.
Signed-off-by: Andrew Patterson <andrew.patterson@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
-rw-r--r-- | drivers/acpi/namespace/nsxfeval.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/acpi/namespace/nsxfeval.c b/drivers/acpi/namespace/nsxfeval.c index f39fbc6b9237..b92133faf5b7 100644 --- a/drivers/acpi/namespace/nsxfeval.c +++ b/drivers/acpi/namespace/nsxfeval.c | |||
@@ -443,6 +443,7 @@ acpi_ns_get_device_callback(acpi_handle obj_handle, | |||
443 | struct acpica_device_id hid; | 443 | struct acpica_device_id hid; |
444 | struct acpi_compatible_id_list *cid; | 444 | struct acpi_compatible_id_list *cid; |
445 | acpi_native_uint i; | 445 | acpi_native_uint i; |
446 | int found; | ||
446 | 447 | ||
447 | status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE); | 448 | status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE); |
448 | if (ACPI_FAILURE(status)) { | 449 | if (ACPI_FAILURE(status)) { |
@@ -496,16 +497,19 @@ acpi_ns_get_device_callback(acpi_handle obj_handle, | |||
496 | 497 | ||
497 | /* Walk the CID list */ | 498 | /* Walk the CID list */ |
498 | 499 | ||
500 | found = 0; | ||
499 | for (i = 0; i < cid->count; i++) { | 501 | for (i = 0; i < cid->count; i++) { |
500 | if (ACPI_STRNCMP(cid->id[i].value, info->hid, | 502 | if (ACPI_STRNCMP(cid->id[i].value, info->hid, |
501 | sizeof(struct | 503 | sizeof(struct |
502 | acpi_compatible_id)) != | 504 | acpi_compatible_id)) == |
503 | 0) { | 505 | 0) { |
504 | ACPI_FREE(cid); | 506 | found = 1; |
505 | return (AE_OK); | 507 | break; |
506 | } | 508 | } |
507 | } | 509 | } |
508 | ACPI_FREE(cid); | 510 | ACPI_FREE(cid); |
511 | if (!found) | ||
512 | return (AE_OK); | ||
509 | } | 513 | } |
510 | } | 514 | } |
511 | 515 | ||