[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