Hi Sakari, Thank you for the patch. On Wed, Feb 23, 2022 at 01:54:34PM +0200, Sakari Ailus wrote: > v4l2_fwnode_parse_reference() relied on counting the number of references > for async array memory allocation. The array is long gone so remove > counting the references now. > > This also changes how the function arrives in different unsuccessful > return values but the functionality remains unchanged. > > Also the check for -ENODATA is removed, it was made redundant by commit > c343bc2ce2c6 ("ACPI: properties: Align return codes of > __acpi_node_get_property_reference()"). This paragraph should be dropped. > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > drivers/media/v4l2-core/v4l2-fwnode.c | 24 ++++++++---------------- > 1 file changed, 8 insertions(+), 16 deletions(-) > > diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c > index ae140443847b..afceb35e500c 100644 > --- a/drivers/media/v4l2-core/v4l2-fwnode.c > +++ b/drivers/media/v4l2-core/v4l2-fwnode.c > @@ -894,21 +894,8 @@ static int v4l2_fwnode_reference_parse(struct device *dev, > int ret; > > for (index = 0; > - !(ret = fwnode_property_get_reference_args(dev_fwnode(dev), > - prop, NULL, 0, > - index, &args)); > - index++) > - fwnode_handle_put(args.fwnode); > - > - if (!index) > - return -ENOENT; > - > - if (ret != -ENOENT) > - return ret; > - > - for (index = 0; > - !fwnode_property_get_reference_args(dev_fwnode(dev), prop, NULL, > - 0, index, &args); > + !(ret = fwnode_property_get_reference_args(dev_fwnode(dev), prop, > + NULL, 0, index, &args)); > index++) { > struct v4l2_async_subdev *asd; > > @@ -924,7 +911,12 @@ static int v4l2_fwnode_reference_parse(struct device *dev, > } > } > > - return 0; > + /* -ENOENT here means successful parsing */ > + if (ret != -ENOENT) > + return ret; > + > + /* Return -ENOENT if no references were found */ > + return index ? 0 : -ENOENT; > } > > /* -- Regards, Laurent Pinchart