Hello Boris Brezillon, The patch 033bfe7538a1: "drm/vc4: dsi: Fix bridge chain handling" from Dec 27, 2019, leads to the following static checker warning: drivers/gpu/drm/vc4/vc4_dsi.c:758 vc4_dsi_encoder_disable() warn: iterator used outside loop: 'iter' drivers/gpu/drm/vc4/vc4_dsi.c 743 static void vc4_dsi_encoder_disable(struct drm_encoder *encoder) 744 { 745 struct vc4_dsi_encoder *vc4_encoder = to_vc4_dsi_encoder(encoder); 746 struct vc4_dsi *dsi = vc4_encoder->dsi; 747 struct device *dev = &dsi->pdev->dev; 748 struct drm_bridge *iter; 749 750 list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) { 751 if (iter->funcs->disable) 752 iter->funcs->disable(iter); 753 } This loops backwards until iter is parked on the list head. 754 755 vc4_dsi_ulps(dsi, true); 756 757 list_for_each_entry_from(iter, &dsi->bridge_chain, chain_node) { But then this "continues" until the iter is parked on the list head. Since we ended with the iterator already on the list head then we never enter this loop and it is a no-op. Am I missing something? 758 if (iter->funcs->post_disable) 759 iter->funcs->post_disable(iter); 760 } 761 762 clk_disable_unprepare(dsi->pll_phy_clock); 763 clk_disable_unprepare(dsi->escape_clock); 764 clk_disable_unprepare(dsi->pixel_clock); 765 766 pm_runtime_put(dev); 767 } regards, dan carpenter _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel