On Wed, Apr 6, 2022 at 1:31 PM Xiaomeng Tong <xiam0nd.tong@xxxxxxxxx> wrote: > > Instead of exiting the loop as expected when an entry is found, the > list_for_each_entry() continues until the traversal is complete. To > avoid potential executing 'ret = gma_backlight_init(dev);' repeatly, > goto outside the loop when the entry is found. > > Signed-off-by: Xiaomeng Tong <xiam0nd.tong@xxxxxxxxx> > --- > > changes since v1: > - goto outside the loop (Xiaomeng Tong) > > v1: https://lore.kernel.org/lkml/20220401115811.9656-1-xiam0nd.tong@xxxxxxxxx/ > > --- > drivers/gpu/drm/gma500/psb_drv.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c > index 2aff54d505e2..929fd47548b4 100644 > --- a/drivers/gpu/drm/gma500/psb_drv.c > +++ b/drivers/gpu/drm/gma500/psb_drv.c > @@ -400,9 +400,10 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags) > case INTEL_OUTPUT_LVDS: > case INTEL_OUTPUT_MIPI: > ret = gma_backlight_init(dev); > - break; > + goto out; > } > } > +out: > drm_connector_list_iter_end(&conn_iter); Hi, This would work but using gotos like this easily turns the code into spaghetti. See "7. Centralized exiting of functions" in Documentation/process/coding-style.rst for when to use gotos. In this particular case I think we are better off using an if-statement. What about something like this: if (gma_encoder->type == INTEL_OUTPUT_LVDS || gma_encoder->type == INTEL_OUTPUT_MIPI) { ret = gma_backlight_init(); break; } -Patrik > > if (ret) > -- > 2.17.1 >