• Mario Kleiner's avatar
    drm/radeon: Fix error handling in radeon_flip_work_func. · 1e1490a3
    Mario Kleiner authored
    This is a port of the patch "drm/amdgpu: Fix error handling in amdgpu_flip_work_func."
    to fix the following problem for radeon as well which was
    reported against amdgpu:
    
    The patch e1d09dc0: "drm/amdgpu: Don't hang in
    amdgpu_flip_work_func on disabled crtc." from Feb 19, 2016, leads to
    the following static checker warning, as reported by Dan Carpenter in
    https://lists.freedesktop.org/archives/dri-devel/2016-February/101987.html
    
    drivers/gpu/drm/amd/amdgpu/amdgpu_display.c:127 amdgpu_flip_work_func()     warn: should this be 'repcnt == -1'
    drivers/gpu/drm/amd/amdgpu/amdgpu_display.c:136 amdgpu_flip_work_func() error: double unlock 'spin_lock:&crtc->dev->event_lock'
    drivers/gpu/drm/amd/amdgpu/amdgpu_display.c:136 amdgpu_flip_work_func() error: double unlock 'irqsave:flags'
    
    This patch fixes both reported problems:
    
    Change post-decrement of repcnt to pre-decrement, so
    it can't underflow anymore, but still performs up to
    three repetitions - three is the maximum one could
    expect in practice.
    
    Move the spin_unlock_irqrestore to where it actually
    belongs.
    Reviewed-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
    Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
    Cc: <stable@vger.kernel.org> # 4.4+
    Cc: Michel Dänzer <michel.daenzer@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    1e1490a3
radeon_display.c 61.7 KB