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>
This commit is contained in:
parent
11614c36bc
commit
e73390d181
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue