diff options
author | Oak Zeng | 2018-11-28 05:08:25 +0100 |
---|---|---|
committer | Alex Deucher | 2019-05-24 19:21:02 +0200 |
commit | e73390d181103a19e1111ec2f25559a0570e9fe0 (patch) | |
tree | 77f9a4c65b65c754efc7ccd4dc1cf4c4e8b709a5 /drivers/gpu/drm/amd/amdkfd | |
parent | drm/amdkfd: Allocate MQD trunk for HIQ and SDMA (diff) | |
download | kernel-qcow2-linux-e73390d181103a19e1111ec2f25559a0570e9fe0.tar.gz kernel-qcow2-linux-e73390d181103a19e1111ec2f25559a0570e9fe0.tar.xz kernel-qcow2-linux-e73390d181103a19e1111ec2f25559a0570e9fe0.zip |
drm/amdkfd: Fix a potential memory leak
Free mqd_mem_obj it GTT buffer allocation for MQD+control stack fails.
Signed-off-by: Oak Zeng <ozeng@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdkfd')
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c index 2f3fb3ddc266..15274a880ea2 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c @@ -76,6 +76,7 @@ static int init_mqd(struct mqd_manager *mm, void **mqd, struct v9_mqd *m; struct kfd_dev *kfd = mm->dev; + *mqd_mem_obj = NULL; /* From V9, for CWSR, the control stack is located on the next page * boundary after the mqd, we will use the gtt allocation function * instead of sub-allocation function. @@ -93,8 +94,10 @@ static int init_mqd(struct mqd_manager *mm, void **mqd, } else retval = kfd_gtt_sa_allocate(mm->dev, sizeof(struct v9_mqd), mqd_mem_obj); - if (retval != 0) + if (retval) { + kfree(*mqd_mem_obj); return -ENOMEM; + } m = (struct v9_mqd *) (*mqd_mem_obj)->cpu_ptr; addr = (*mqd_mem_obj)->gpu_addr; |