From 3e8a24f7b5a3168c5eaa44f7fa79c1e932383059 Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Fri, 28 Jul 2017 17:58:35 -0400 Subject: [PATCH 1757/4131] drm/amdkfd: Fix a bug that process cleanup is not done properly When destroying a queue fails in nocpsch, it may leave other queues not destroyed and process not unregistered. This commit fixes that. Change-Id: I9dcf7cb71242aa02e5b72c0381fec19a85f3dfe4 Signed-off-by: Yong Zhao --- drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c index 93bf90b..77cabd1 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c @@ -1430,9 +1430,11 @@ static int process_termination_nocpsch(struct device_queue_manager *dqm, /* Clear all user mode queues */ list_for_each_entry_safe(q, next, &qpd->queues_list, list) { - retval = destroy_queue_nocpsch_locked(dqm, qpd, q); - if (retval) - goto out; + int ret; + + ret = destroy_queue_nocpsch_locked(dqm, qpd, q); + if (ret) + retval = ret; } /* Unregister process */ @@ -1445,7 +1447,6 @@ static int process_termination_nocpsch(struct device_queue_manager *dqm, } } -out: mutex_unlock(&dqm->lock); return retval; } -- 2.7.4