Message ID | 87bk4ooxya.wl-kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | use for_each_endpoint_of_node() | expand |
On Thu, May 30, 2024 at 02:06:22AM +0000, Kuninori Morimoto wrote: > We already have for_each_endpoint_of_node(), don't use > of_graph_get_next_endpoint() directly. Replace it. > > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > --- > .../staging/media/deprecated/atmel/atmel-sama5d2-isc.c | 8 ++------ > .../staging/media/deprecated/atmel/atmel-sama7g5-isc.c | 8 ++------ > 2 files changed, 4 insertions(+), 12 deletions(-) > > diff --git a/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c b/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c > index 31b2b48085c59..3b28a232418a9 100644 > --- a/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c > +++ b/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c > @@ -333,20 +333,16 @@ static const u32 isc_sama5d2_gamma_table[][GAMMA_ENTRIES] = { > static int isc_parse_dt(struct device *dev, struct isc_device *isc) > { > struct device_node *np = dev->of_node; > - struct device_node *epn = NULL; > + struct device_node *epn; > struct isc_subdev_entity *subdev_entity; > unsigned int flags; > int ret; > > INIT_LIST_HEAD(&isc->subdev_entities); > > - while (1) { > + for_each_endpoint_of_node(np, epn) { > struct v4l2_fwnode_endpoint v4l2_epn = { .bus_type = 0 }; > > - epn = of_graph_get_next_endpoint(np, epn); > - if (!epn) > - return 0; > - > ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(epn), > &v4l2_epn); > if (ret) { This introduces a Smatch warning because now "ret" is uninitialized if the for_each_endpoint_of_node() list is empty. Is that something which is possible? I've been meaning to make a list of loops which always iterate at least one time. for_each_cpu() etc. regards, dan carpenter
Hi Dan > > - while (1) { > > + for_each_endpoint_of_node(np, epn) { > > struct v4l2_fwnode_endpoint v4l2_epn = { .bus_type = 0 }; > > > > - epn = of_graph_get_next_endpoint(np, epn); > > - if (!epn) > > - return 0; > > - > > ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(epn), > > &v4l2_epn); > > if (ret) { > > This introduces a Smatch warning because now "ret" is uninitialized if > the for_each_endpoint_of_node() list is empty. Is that something which > is possible? > > I've been meaning to make a list of loops which always iterate at least > one time. for_each_cpu() etc. Oh, OK thank you for pointing it. I will fixup and post it next week Thank you for your help !! Best regards --- Kuninori Morimoto
diff --git a/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c b/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c index 31b2b48085c59..3b28a232418a9 100644 --- a/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c +++ b/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c @@ -333,20 +333,16 @@ static const u32 isc_sama5d2_gamma_table[][GAMMA_ENTRIES] = { static int isc_parse_dt(struct device *dev, struct isc_device *isc) { struct device_node *np = dev->of_node; - struct device_node *epn = NULL; + struct device_node *epn; struct isc_subdev_entity *subdev_entity; unsigned int flags; int ret; INIT_LIST_HEAD(&isc->subdev_entities); - while (1) { + for_each_endpoint_of_node(np, epn) { struct v4l2_fwnode_endpoint v4l2_epn = { .bus_type = 0 }; - epn = of_graph_get_next_endpoint(np, epn); - if (!epn) - return 0; - ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(epn), &v4l2_epn); if (ret) { diff --git a/drivers/staging/media/deprecated/atmel/atmel-sama7g5-isc.c b/drivers/staging/media/deprecated/atmel/atmel-sama7g5-isc.c index 020034f631f57..e559beb099f71 100644 --- a/drivers/staging/media/deprecated/atmel/atmel-sama7g5-isc.c +++ b/drivers/staging/media/deprecated/atmel/atmel-sama7g5-isc.c @@ -316,7 +316,7 @@ static const u32 isc_sama7g5_gamma_table[][GAMMA_ENTRIES] = { static int xisc_parse_dt(struct device *dev, struct isc_device *isc) { struct device_node *np = dev->of_node; - struct device_node *epn = NULL; + struct device_node *epn; struct isc_subdev_entity *subdev_entity; unsigned int flags; int ret; @@ -326,13 +326,9 @@ static int xisc_parse_dt(struct device *dev, struct isc_device *isc) mipi_mode = of_property_read_bool(np, "microchip,mipi-mode"); - while (1) { + for_each_endpoint_of_node(np, epn) { struct v4l2_fwnode_endpoint v4l2_epn = { .bus_type = 0 }; - epn = of_graph_get_next_endpoint(np, epn); - if (!epn) - return 0; - ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(epn), &v4l2_epn); if (ret) {