Re: [PATCH v5 06/12] media: rcar-vin: Improve error paths for parallel devices

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

 



Hi Niklas,

Thank you for the patch.

On Fri, Jun 06, 2025 at 08:26:00PM +0200, Niklas Söderlund wrote:
> Use the __free(fwnode_handle) hooks to free the endpoints when the
> function exits to simplify the error paths and make the intent more
> clear.
> 
> While at it correct the error message when failing to parse an endpoint
> to report the correct node.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx>

Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx>

> ---
> * Changes since v4
> - New in v5, improvement suggested by Sakari and Laurent in review of v4.
> ---
>  .../platform/renesas/rcar-vin/rcar-core.c     | 28 +++++++------------
>  1 file changed, 10 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/media/platform/renesas/rcar-vin/rcar-core.c b/drivers/media/platform/renesas/rcar-vin/rcar-core.c
> index df3f15bd95a4..100432080ad7 100644
> --- a/drivers/media/platform/renesas/rcar-vin/rcar-core.c
> +++ b/drivers/media/platform/renesas/rcar-vin/rcar-core.c
> @@ -340,24 +340,20 @@ static void rvin_group_notifier_cleanup(struct rvin_dev *vin)
>  
>  static int rvin_parallel_parse_of(struct rvin_dev *vin)
>  {
> -	struct fwnode_handle *ep, *fwnode;
> +	struct fwnode_handle *fwnode __free(fwnode_handle) = NULL;
> +	struct fwnode_handle *ep __free(fwnode_handle) = NULL;
>  	struct v4l2_fwnode_endpoint vep = {
>  		.bus_type = V4L2_MBUS_UNKNOWN,
>  	};
>  	struct v4l2_async_connection *asc;
> -	int ret;
>  
>  	ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(vin->dev), 0, 0, 0);
>  	if (!ep)
>  		return 0;
>  
> -	fwnode = fwnode_graph_get_remote_endpoint(ep);
> -	ret = v4l2_fwnode_endpoint_parse(ep, &vep);
> -	fwnode_handle_put(ep);
> -	if (ret) {
> -		vin_err(vin, "Failed to parse %pOF\n", to_of_node(fwnode));
> -		ret = -EINVAL;
> -		goto out;
> +	if (v4l2_fwnode_endpoint_parse(ep, &vep)) {
> +		vin_err(vin, "Failed to parse %pOF\n", to_of_node(ep));
> +		return -EINVAL;
>  	}
>  
>  	switch (vep.bus_type) {
> @@ -371,24 +367,20 @@ static int rvin_parallel_parse_of(struct rvin_dev *vin)
>  		break;
>  	default:
>  		vin_err(vin, "Unknown media bus type\n");
> -		ret = -EINVAL;
> -		goto out;
> +		return -EINVAL;
>  	}
>  
> +	fwnode = fwnode_graph_get_remote_endpoint(ep);
>  	asc = v4l2_async_nf_add_fwnode(&vin->notifier, fwnode,
>  				       struct v4l2_async_connection);
> -	if (IS_ERR(asc)) {
> -		ret = PTR_ERR(asc);
> -		goto out;
> -	}
> +	if (IS_ERR(asc))
> +		return PTR_ERR(asc);
>  
>  	vin->parallel.asc = asc;
>  
>  	vin_dbg(vin, "Add parallel OF device %pOF\n", to_of_node(fwnode));
> -out:
> -	fwnode_handle_put(fwnode);
>  
> -	return ret;
> +	return 0;
>  }
>  
>  static int rvin_group_notifier_init(struct rvin_dev *vin, unsigned int port,

-- 
Regards,

Laurent Pinchart




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux