On Fri, 26 Jun 2020 13:34:01 +0300 Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > The problem is that the iterator is already at the list head so the > list_for_each_entry_from() loop is a no-op and we don't call the > the iter->funcs->post_disable() functions. This should be > list_for_each_entry() instead. > > Fixes: 033bfe7538a1 ("drm/vc4: dsi: Fix bridge chain handling") > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Reviewed-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> > --- > drivers/gpu/drm/vc4/vc4_dsi.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c > index eaf276978ee7..f92d0e92fa72 100644 > --- a/drivers/gpu/drm/vc4/vc4_dsi.c > +++ b/drivers/gpu/drm/vc4/vc4_dsi.c > @@ -754,7 +754,7 @@ static void vc4_dsi_encoder_disable(struct drm_encoder *encoder) > > vc4_dsi_ulps(dsi, true); > > - list_for_each_entry_from(iter, &dsi->bridge_chain, chain_node) { > + list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { > if (iter->funcs->post_disable) > iter->funcs->post_disable(iter); > }