On Tue, Jun 14, 2016 at 07:50:58PM +0200, Daniel Vetter wrote: > stall_checks carefully picked out the right commit to stall on, then > promptly used the wrong variable. Due to the break in the next loop > iteration this could be the 3rd commit, or if the list only has 2 > entries commit would now point into the struct drm_crtc itself, at > some offset. Hilarity eventually ensues. > > For added safety, also break right away instead of iterating once > more, but the real fix is waiting on stall_commit instead of commit. > > Reported-and-tested-by: Liviu Dudau <Liviu.Dudau@xxxxxxx> > Cc: Liviu Dudau <Liviu.Dudau@xxxxxxx> Reviewed-by: Liviu Dudau <Liviu.Dudau@xxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > --- > drivers/gpu/drm/drm_atomic_helper.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index 6a13df8691d4..716aa535eb98 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -1324,8 +1324,8 @@ static int stall_checks(struct drm_crtc *crtc, bool nonblock) > } else if (i == 1) { > stall_commit = commit; > drm_crtc_commit_get(stall_commit); > - } else > break; > + } > > i++; > } > @@ -1337,7 +1337,7 @@ static int stall_checks(struct drm_crtc *crtc, bool nonblock) > /* We don't want to let commits get ahead of cleanup work too much, > * stalling on 2nd previous commit means triple-buffer won't ever stall. > */ > - ret = wait_for_completion_interruptible_timeout(&commit->cleanup_done, > + ret = wait_for_completion_interruptible_timeout(&stall_commit->cleanup_done, > 10*HZ); > if (ret == 0) > DRM_ERROR("[CRTC:%d:%s] cleanup_done timed out\n", > -- > 2.8.1 > -- ==================== | I would like to | | fix the world, | | but they're not | | giving me the | \ source code! / --------------- ¯\_(ツ)_/¯ _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel