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