Re: [PATCH 3.12 36/58] Revert "drm/radeon: hold reference to fences in radeon_sa_bo_new"

From: Nicolai HÃhnle
Date: Wed Mar 16 2016 - 15:42:08 EST


This is fine. Please consider applying the corrected backport that I sent around yesterday.

Apologies for the mess - an unfortunate interaction with older code, plus then some stable branches already reverted the original backport while others didn't. The best way forward right now is to revert the original backport (as indicated in your mail) and apply the fixed one.

Thanks,
Nicolai

On 16.03.2016 05:59, Jiri Slaby wrote:
3.12-stable review patch. If anyone has any objections, please let me know.

===============

This reverts commit 40df18b49e7fe4ec9ab93f68c33661ee291149bd, commit
f6ff4f67cdf8455d0a4226eeeaf5af17c37d05eb upstream.

It causes oopses:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
IP: [<ffffffffa010345d>] radeon_fence_ref+0xd/0x50 [radeon]

Signed-off-by: Jiri Slaby <jslaby@xxxxxxx>
Cc: Nicolai HÃhnle <nicolai.haehnle@xxxxxxx>
Cc: Christian KÃnig <christian.koenig@xxxxxxx>
---
drivers/gpu/drm/radeon/radeon_sa.c | 5 -----
1 file changed, 5 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_sa.c b/drivers/gpu/drm/radeon/radeon_sa.c
index bb166849aa6e..f0bac68254b7 100644
--- a/drivers/gpu/drm/radeon/radeon_sa.c
+++ b/drivers/gpu/drm/radeon/radeon_sa.c
@@ -349,13 +349,8 @@ int radeon_sa_bo_new(struct radeon_device *rdev,
/* see if we can skip over some allocations */
} while (radeon_sa_bo_next_hole(sa_manager, fences, tries));

- for (i = 0; i < RADEON_NUM_RINGS; ++i)
- radeon_fence_ref(fences[i]);
-
spin_unlock(&sa_manager->wq.lock);
r = radeon_fence_wait_any(rdev, fences, false);
- for (i = 0; i < RADEON_NUM_RINGS; ++i)
- radeon_fence_unref(&fences[i]);
spin_lock(&sa_manager->wq.lock);
/* if we have nothing to wait for block */
if (r == -ENOENT && block) {