summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlexey Khoroshilov <khoroshilov@ispras.ru>2015-01-04 02:31:20 +0300
committerOded Gabbay <oded.gabbay@amd.com>2015-01-04 02:31:20 +0300
commit4c18442e536ec24cc5ca23c5bbaa80bd53020b95 (patch)
treec942776401f270bbebc58f8c0a009d869af61413 /drivers
parent030e416b4f7782b22e8985095be0ea641aa20bf8 (diff)
downloadlinux-4c18442e536ec24cc5ca23c5bbaa80bd53020b95.tar.bz2
drm/radeon: do not leave queue acquired if timeout happens in kgd_hqd_destroy()
If timeout happens, kgd_hqd_destroy() just returns -ETIME leaving queue acquired. It may cause a deadlock, so the patch proposes to release queue before return. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/radeon/radeon_kfd.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_kfd.c b/drivers/gpu/drm/radeon/radeon_kfd.c
index 12c43df3d47d..a55afbadc65f 100644
--- a/drivers/gpu/drm/radeon/radeon_kfd.c
+++ b/drivers/gpu/drm/radeon/radeon_kfd.c
@@ -568,6 +568,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd, uint32_t reset_type,
if (timeout == 0) {
pr_err("kfd: cp queue preemption time out (%dms)\n",
temp);
+ release_queue(kgd);
return -ETIME;
}
msleep(20);