Re: [PATCH v2 1/1] ACPI: Return _DSD hierarchical extension (data) sub-nodes correctly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Friday, September 8, 2017 11:24:41 AM CEST Sakari Ailus wrote:
> The recently merged patch "ACPI: Prepare for constifying
> acpi_get_next_subnode() fwnode argument" was part of a patchset
> constifying the fwnode arguments across the fwnode property API. The
> purpose of the patch was to allow returning non-const fwnodes from a data
> structure the root of which is const.
> 
> Unfortunately the patch introduced the functionality, in particular when
> starting parsed from an ACPI device node, the hierarchical data extension
> nodes would not be enumerated.
> 
> Restore the old behaviour while still retaining constness properties of
> the patch.
> 
> Fixes: 01c1da289791 ("ACPI: Prepare for constifying acpi_get_next_subnode() fwnode argument")
> Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> Acked-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
> ---
> since v1:
> 
> - Add Mika's ack.
> 
> - Fix recetly -> recently in commit message.
> 
> - Add commit ID to Fixes: line.
> 
>  drivers/acpi/property.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
> index a65c09c..d70dab2 100644
> --- a/drivers/acpi/property.c
> +++ b/drivers/acpi/property.c
> @@ -902,11 +902,12 @@ struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
>  					    struct fwnode_handle *child)
>  {
>  	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)) {
> +		struct acpi_device *child_adev;
> +
>  		if (adev)
>  			head = &adev->children;
>  		else
> @@ -916,8 +917,8 @@ struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
>  			goto nondev;
>  
>  		if (child) {
> -			child_adev = to_acpi_device_node(child);
> -			next = child_adev->node.next;
> +			adev = to_acpi_device_node(child);
> +			next = adev->node.next;
>  			if (next == head) {
>  				child = NULL;
>  				goto nondev;
> @@ -935,8 +936,8 @@ struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
>  		const struct acpi_data_node *data = to_acpi_data_node(fwnode);
>  		struct acpi_data_node *dn;
>  
> -		if (child_adev)
> -			head = &child_adev->data.subnodes;
> +		if (adev)
> +			head = &adev->data.subnodes;
>  		else if (data)
>  			head = &data->data.subnodes;
>  		else
> 

Applied, thanks!


--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux