On Fri Jun 13 17:34:28 2025 +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+rene...@ragnatech.se>
> Reviewed-by: Laurent Pinchart <laurent.pinchart+rene...@ideasonboard.com>
> Link: 
> https://lore.kernel.org/r/20250613153434.2001800-8-niklas.soderlund+rene...@ragnatech.se
> Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
> Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>

Patch committed.

Thanks,
Hans Verkuil

 .../media/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 95621c11eecc..28070ada7f60 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,

Reply via email to