[PATCH] drm/atomic-helpers: Stall on the right commit
Liviu Dudau
Liviu.Dudau at arm.com
Wed Jun 15 14:06:00 UTC 2016
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 at arm.com>
> Cc: Liviu Dudau <Liviu.Dudau at arm.com>
Reviewed-by: Liviu Dudau <Liviu.Dudau at arm.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> ---
> 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! /
---------------
¯\_(ツ)_/¯
More information about the dri-devel
mailing list