diff options
author | Christian König <christian.koenig@amd.com> | 2013-10-14 11:32:28 +0200 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2013-10-18 16:16:16 -0400 |
commit | 5510f124c6ee53cb52cf632240aea982d64c7d99 (patch) | |
tree | 9398a9ff0bcaaf52765d0840277c488d40d9a9ec /drivers/gpu | |
parent | c23632d4e57c0dd20bf50eca08fa0eb8ad3ff680 (diff) | |
download | op-kernel-dev-5510f124c6ee53cb52cf632240aea982d64c7d99.zip op-kernel-dev-5510f124c6ee53cb52cf632240aea982d64c7d99.tar.gz |
drm/radeon: stop the leaks in cik_ib_test
Stop leaking IB memory and scratch register space when the test fails.
Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/radeon/cik.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c index b874ccd..8f393df 100644 --- a/drivers/gpu/drm/radeon/cik.c +++ b/drivers/gpu/drm/radeon/cik.c @@ -3182,6 +3182,7 @@ int cik_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) r = radeon_ib_get(rdev, ring->idx, &ib, NULL, 256); if (r) { DRM_ERROR("radeon: failed to get ib (%d).\n", r); + radeon_scratch_free(rdev, scratch); return r; } ib.ptr[0] = PACKET3(PACKET3_SET_UCONFIG_REG, 1); @@ -3198,6 +3199,8 @@ int cik_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) r = radeon_fence_wait(ib.fence, false); if (r) { DRM_ERROR("radeon: fence wait failed (%d).\n", r); + radeon_scratch_free(rdev, scratch); + radeon_ib_free(rdev, &ib); return r; } for (i = 0; i < rdev->usec_timeout; i++) { |