Message ID | 20220413051105.5612-1-xiam0nd.tong@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] drm/gma500: fix a potential repeat execution in psb_driver_load | expand |
On Wed, Apr 13, 2022 at 7:11 AM Xiaomeng Tong <xiam0nd.tong@gmail.com> 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 found entry by replacing switch/case with > if statement. > > Signed-off-by: Xiaomeng Tong <xiam0nd.tong@gmail.com> Thanks for the patch. I've applied it to drm-misc-next. I fixed up an indentation issue on the second line. Cheers Patrik > --- > changes since v2: > - replace switch with if statement (Patrik Jakobsson) > > changes since v1: > - goto outside the loop (Xiaomeng Tong) > > v2: https://lore.kernel.org/dri-devel/20220406113143.10699-1-xiam0nd.tong@gmail.com/ > v1: https://lore.kernel.org/lkml/20220401115811.9656-1-xiam0nd.tong@gmail.com/ > --- > drivers/gpu/drm/gma500/psb_drv.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c > index 2aff54d505e2..85211ec16e52 100644 > --- a/drivers/gpu/drm/gma500/psb_drv.c > +++ b/drivers/gpu/drm/gma500/psb_drv.c > @@ -396,9 +396,8 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags) > drm_for_each_connector_iter(connector, &conn_iter) { > gma_encoder = gma_attached_encoder(connector); > > - switch (gma_encoder->type) { > - case INTEL_OUTPUT_LVDS: > - case INTEL_OUTPUT_MIPI: > + if (gma_encoder->type == INTEL_OUTPUT_LVDS || > + gma_encoder->type == INTEL_OUTPUT_MIPI) { > ret = gma_backlight_init(dev); > break; > } > -- > 2.17.1 >
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c index 2aff54d505e2..85211ec16e52 100644 --- a/drivers/gpu/drm/gma500/psb_drv.c +++ b/drivers/gpu/drm/gma500/psb_drv.c @@ -396,9 +396,8 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags) drm_for_each_connector_iter(connector, &conn_iter) { gma_encoder = gma_attached_encoder(connector); - switch (gma_encoder->type) { - case INTEL_OUTPUT_LVDS: - case INTEL_OUTPUT_MIPI: + if (gma_encoder->type == INTEL_OUTPUT_LVDS || + gma_encoder->type == INTEL_OUTPUT_MIPI) { ret = gma_backlight_init(dev); break; }
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 found entry by replacing switch/case with if statement. Signed-off-by: Xiaomeng Tong <xiam0nd.tong@gmail.com> --- changes since v2: - replace switch with if statement (Patrik Jakobsson) changes since v1: - goto outside the loop (Xiaomeng Tong) v2: https://lore.kernel.org/dri-devel/20220406113143.10699-1-xiam0nd.tong@gmail.com/ v1: https://lore.kernel.org/lkml/20220401115811.9656-1-xiam0nd.tong@gmail.com/ --- drivers/gpu/drm/gma500/psb_drv.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)