diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/acpi/property.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c index cb6a3b38ded2..04c60a25ee87 100644 --- a/drivers/acpi/property.c +++ b/drivers/acpi/property.c @@ -899,8 +899,10 @@ int acpi_node_prop_read(struct fwnode_handle *fwnode, const char *propname, struct fwnode_handle *acpi_get_next_subnode(struct fwnode_handle *fwnode, struct fwnode_handle *child) { - struct acpi_device *adev = to_acpi_device_node(fwnode); - struct list_head *head, *next; + const struct acpi_device *adev = to_acpi_device_node(fwnode); + struct acpi_device *child_adev = NULL; + const struct list_head *head; + struct list_head *next; if (!child || is_acpi_device_node(child)) { if (adev) @@ -912,26 +914,27 @@ struct fwnode_handle *acpi_get_next_subnode(struct fwnode_handle *fwnode, goto nondev; if (child) { - adev = to_acpi_device_node(child); - next = adev->node.next; + child_adev = to_acpi_device_node(child); + next = child_adev->node.next; if (next == head) { child = NULL; goto nondev; } - adev = list_entry(next, struct acpi_device, node); + child_adev = list_entry(next, struct acpi_device, node); } else { - adev = list_first_entry(head, struct acpi_device, node); + child_adev = list_first_entry(head, struct acpi_device, + node); } - return acpi_fwnode_handle(adev); + return acpi_fwnode_handle(child_adev); } nondev: if (!child || is_acpi_data_node(child)) { - struct acpi_data_node *data = to_acpi_data_node(fwnode); + const struct acpi_data_node *data = to_acpi_data_node(fwnode); struct acpi_data_node *dn; - if (adev) - head = &adev->data.subnodes; + if (child_adev) + head = &child_adev->data.subnodes; else if (data) head = &data->data.subnodes; else |