diff options
Diffstat (limited to 'drivers/acpi/scan.c')
-rw-r--r-- | drivers/acpi/scan.c | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index a0ab828b2cc5..08ba85cab2dd 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c | |||
@@ -234,12 +234,9 @@ static int acpi_bus_get_power_flags(struct acpi_device *device) | |||
234 | 234 | ||
235 | int acpi_match_ids(struct acpi_device *device, char *ids) | 235 | int acpi_match_ids(struct acpi_device *device, char *ids) |
236 | { | 236 | { |
237 | int error = 0; | ||
238 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; | ||
239 | |||
240 | if (device->flags.hardware_id) | 237 | if (device->flags.hardware_id) |
241 | if (strstr(ids, device->pnp.hardware_id)) | 238 | if (strstr(ids, device->pnp.hardware_id)) |
242 | goto Done; | 239 | return 0; |
243 | 240 | ||
244 | if (device->flags.compatible_ids) { | 241 | if (device->flags.compatible_ids) { |
245 | struct acpi_compatible_id_list *cid_list = device->pnp.cid_list; | 242 | struct acpi_compatible_id_list *cid_list = device->pnp.cid_list; |
@@ -248,15 +245,10 @@ int acpi_match_ids(struct acpi_device *device, char *ids) | |||
248 | /* compare multiple _CID entries against driver ids */ | 245 | /* compare multiple _CID entries against driver ids */ |
249 | for (i = 0; i < cid_list->count; i++) { | 246 | for (i = 0; i < cid_list->count; i++) { |
250 | if (strstr(ids, cid_list->id[i].value)) | 247 | if (strstr(ids, cid_list->id[i].value)) |
251 | goto Done; | 248 | return 0; |
252 | } | 249 | } |
253 | } | 250 | } |
254 | error = -ENOENT; | 251 | return -ENOENT; |
255 | |||
256 | Done: | ||
257 | if (buffer.pointer) | ||
258 | acpi_os_free(buffer.pointer); | ||
259 | return error; | ||
260 | } | 252 | } |
261 | 253 | ||
262 | static acpi_status | 254 | static acpi_status |
@@ -645,21 +637,19 @@ EXPORT_SYMBOL(acpi_bus_register_driver); | |||
645 | */ | 637 | */ |
646 | int acpi_bus_unregister_driver(struct acpi_driver *driver) | 638 | int acpi_bus_unregister_driver(struct acpi_driver *driver) |
647 | { | 639 | { |
648 | int error = 0; | ||
649 | |||
650 | ACPI_FUNCTION_TRACE("acpi_bus_unregister_driver"); | 640 | ACPI_FUNCTION_TRACE("acpi_bus_unregister_driver"); |
651 | 641 | ||
652 | if (driver) { | 642 | if (!driver) |
653 | acpi_driver_detach(driver); | 643 | return_VALUE(-EINVAL); |
654 | 644 | ||
655 | if (!atomic_read(&driver->references)) { | 645 | acpi_driver_detach(driver); |
656 | spin_lock(&acpi_device_lock); | 646 | |
657 | list_del_init(&driver->node); | 647 | if (!atomic_read(&driver->references)) { |
658 | spin_unlock(&acpi_device_lock); | 648 | spin_lock(&acpi_device_lock); |
659 | } | 649 | list_del_init(&driver->node); |
660 | } else | 650 | spin_unlock(&acpi_device_lock); |
661 | error = -EINVAL; | 651 | } |
662 | return_VALUE(error); | 652 | return_VALUE(0); |
663 | } | 653 | } |
664 | 654 | ||
665 | EXPORT_SYMBOL(acpi_bus_unregister_driver); | 655 | EXPORT_SYMBOL(acpi_bus_unregister_driver); |