Am 24.06.2016 um 10:30 schrieb Michel Dänzer: > From: Michel Dänzer <michel.daenzer at amd.com> > > If reservation_object_get_fences_rcu failed, we'd previously go directly > to the cleanup label, so we'd leave the BO pinned. > > While we're at it, remove two amdgpu_bo_unreserve calls in favour of two > new labels. > > Signed-off-by: Michel Dänzer <michel.daenzer at amd.com> Reviewed-by: Christian König <christian.koenig at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c > index 7268030..de95ea7 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c > @@ -220,19 +220,17 @@ int amdgpu_crtc_page_flip(struct drm_crtc *crtc, > > r = amdgpu_bo_pin_restricted(new_rbo, AMDGPU_GEM_DOMAIN_VRAM, 0, 0, &base); > if (unlikely(r != 0)) { > - amdgpu_bo_unreserve(new_rbo); > r = -EINVAL; > DRM_ERROR("failed to pin new rbo buffer before flip\n"); > - goto cleanup; > + goto unreserve; > } > > r = reservation_object_get_fences_rcu(new_rbo->tbo.resv, &work->excl, > &work->shared_count, > &work->shared); > if (unlikely(r != 0)) { > - amdgpu_bo_unreserve(new_rbo); > DRM_ERROR("failed to get fences for buffer\n"); > - goto cleanup; > + goto unpin; > } > > amdgpu_bo_get_tiling_flags(new_rbo, &tiling_flags); > @@ -275,9 +273,11 @@ pflip_cleanup: > DRM_ERROR("failed to reserve new rbo in error path\n"); > goto cleanup; > } > +unpin: > if (unlikely(amdgpu_bo_unpin(new_rbo) != 0)) { > DRM_ERROR("failed to unpin new rbo in error path\n"); > } > +unreserve: > amdgpu_bo_unreserve(new_rbo); > > cleanup: