Browse Source

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>
Alexey Khoroshilov 10 years ago
parent
commit
4c18442e53
1 changed files with 1 additions and 0 deletions
  1. 1 0
      drivers/gpu/drm/radeon/radeon_kfd.c

+ 1 - 0
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);