]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ACPI: scan: Rearrange code related to acpi_get_device_data()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 18 Jan 2021 19:25:37 +0000 (20:25 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 25 Jan 2021 18:00:32 +0000 (19:00 +0100)
There are two callers of acpi_get_device_data(), acpi_bus_get_device()
and acpi_bus_get_acpi_device(), but only one of them takes the int
return value into account.  Moreover, the latter knows that it passes
a valid return pointer to acpi_get_device_data() and it properly
clears that pointer upfront, so it doesn't need acpi_get_device_data()
to do that.

For this reason, rearrange acpi_get_device_data() to return a strct
acpi_device pointer instead of an int and adapt its callers to that.

While at it, rename acpi_get_device_data() to handle_to_device(),
because the old name does not really reflect the functionality
provided by that function.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
drivers/acpi/scan.c

index 1510afa7094d7656fa1a29d8343fdf71013db0df..bcbf0fc215c8ffc98809e414311e035a8c666665 100644 (file)
@@ -578,29 +578,31 @@ static void acpi_scan_drop_device(acpi_handle handle, void *context)
        mutex_unlock(&acpi_device_del_lock);
 }
 
-static int acpi_get_device_data(acpi_handle handle, struct acpi_device **device,
-                               void (*callback)(void *))
+static struct acpi_device *handle_to_device(acpi_handle handle,
+                                           void (*callback)(void *))
 {
+       struct acpi_device *adev = NULL;
        acpi_status status;
 
-       if (!device)
-               return -EINVAL;
-
-       *device = NULL;
-
        status = acpi_get_data_full(handle, acpi_scan_drop_device,
-                                   (void **)device, callback);
-       if (ACPI_FAILURE(status) || !*device) {
-               ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No context for object [%p]\n",
-                                 handle));
-               return -ENODEV;
+                                   (void **)&adev, callback);
+       if (ACPI_FAILURE(status) || !adev) {
+               acpi_handle_debug(handle, "No context!\n");
+               return NULL;
        }
-       return 0;
+       return adev;
 }
 
 int acpi_bus_get_device(acpi_handle handle, struct acpi_device **device)
 {
-       return acpi_get_device_data(handle, device, NULL);
+       if (!device)
+               return -EINVAL;
+
+       *device = handle_to_device(handle, NULL);
+       if (!*device)
+               return -ENODEV;
+
+       return 0;
 }
 EXPORT_SYMBOL(acpi_bus_get_device);
 
@@ -612,10 +614,7 @@ static void get_acpi_device(void *dev)
 
 struct acpi_device *acpi_bus_get_acpi_device(acpi_handle handle)
 {
-       struct acpi_device *adev = NULL;
-
-       acpi_get_device_data(handle, &adev, get_acpi_device);
-       return adev;
+       return handle_to_device(handle, get_acpi_device);
 }
 
 void acpi_bus_put_acpi_device(struct acpi_device *adev)