drm/radeon: do not leave queue acquired if timeout happens in kgd_hqd_destroy()
authorAlexey Khoroshilov <khoroshilov@ispras.ru>
Sat, 3 Jan 2015 23:31:20 +0000 (02:31 +0300)
committerOded Gabbay <oded.gabbay@amd.com>
Sat, 3 Jan 2015 23:31:20 +0000 (02:31 +0300)
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>
drivers/gpu/drm/radeon/radeon_kfd.c

index 12c43df3d47d38b9ede1c02f0dbc824d011f45de..a55afbadc65fb1f12f5dc75a99fb910d0590ae4d 100644 (file)
@@ -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);