On Fri, 1 Apr 2022 12:10:48 +0200, Patrik Jakobsson wrote:
On Wed, Mar 30, 2022 at 2:03 PM 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, add a break after the switch statement.
Fixes: 5c49fd3aa0ab0 ("gma500: Add the core DRM files and headers") Signed-off-by: Xiaomeng Tong xiam0nd.tong@gmail.com
This is incorrect. If we always break on the first iteration we will only run gma_backlight_init() if the first connector is LVDS or MIPI. This might not be the case and gma_backlight_init() will never run. The other loops you have been looking at have an "if (xxx != yyy) continue;" statement at the top which skips all the unwanted entries but this loop does not.
Yes, your are correct. But it still need to break the loop when found it. So it is better to add if(!ret) break; after the switch statment. I will resend another patch if it is necessary.
drivers/gpu/drm/gma500/psb_drv.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c index 65cf1c79dd7c..d65a68811bf7 100644 --- a/drivers/gpu/drm/gma500/psb_drv.c +++ b/drivers/gpu/drm/gma500/psb_drv.c @@ -398,6 +398,8 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags) ret = gma_backlight_init(dev); break; }
break; } if (ret)
-- 2.17.1
-- Xiaomeng Tong