lkml.org 
[lkml]   [2022]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v1 02/16] ACPI: glue: Introduce acpi_dev_has_children()
    Date
    From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

    Define acpi_dev_has_children() as a wrapper around
    acpi_dev_for_each_child() and use it to check if the given ACPI
    device has any children instead of checking the children list
    head in struct acpi_device.

    This will help to eliminate the children list head from struct
    acpi_device as it is redundant and it is used in questionable ways
    in some places (in particular, locking is needed for walking the
    list pointed to it safely, but it is often missing).

    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    ---
    drivers/acpi/glue.c | 12 +++++++++++-
    1 file changed, 11 insertions(+), 1 deletion(-)

    Index: linux-pm/drivers/acpi/glue.c
    ===================================================================
    --- linux-pm.orig/drivers/acpi/glue.c
    +++ linux-pm/drivers/acpi/glue.c
    @@ -77,12 +77,22 @@ static struct acpi_bus_type *acpi_get_bu
    #define FIND_CHILD_MIN_SCORE 1
    #define FIND_CHILD_MAX_SCORE 2

    +static int match_any(struct acpi_device *adev, void *not_used)
    +{
    + return 1;
    +}
    +
    +static bool acpi_dev_has_children(struct acpi_device *adev)
    +{
    + return acpi_dev_for_each_child(adev, match_any, NULL) > 0;
    +}
    +
    static int find_child_checks(struct acpi_device *adev, bool check_children)
    {
    unsigned long long sta;
    acpi_status status;

    - if (check_children && list_empty(&adev->children))
    + if (check_children && !acpi_dev_has_children(adev))
    return -ENODEV;

    status = acpi_evaluate_integer(adev->handle, "_STA", NULL, &sta);


    \
     
     \ /
      Last update: 2022-06-09 16:23    [W:4.046 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site