mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-05-08 10:28:04 +02:00
amdgpu: Cleanly handle ENOMEM on result in amdgpu_bo_list_create()
Move the allocation of result prior to the IOCTL so we can cleanly backtrack if the allocation fails. Signed-off-by: Tom St Denis <tom.stdenis@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
1a6a8f34a0
commit
b176372af4
1 changed files with 9 additions and 2 deletions
|
|
@ -591,6 +591,12 @@ int amdgpu_bo_list_create(amdgpu_device_handle dev,
|
|||
if (!list)
|
||||
return -ENOMEM;
|
||||
|
||||
*result = malloc(sizeof(struct amdgpu_bo_list));
|
||||
if (!*result) {
|
||||
free(list);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memset(&args, 0, sizeof(args));
|
||||
args.in.operation = AMDGPU_BO_LIST_OP_CREATE;
|
||||
args.in.bo_number = number_of_resources;
|
||||
|
|
@ -608,10 +614,11 @@ int amdgpu_bo_list_create(amdgpu_device_handle dev,
|
|||
r = drmCommandWriteRead(dev->fd, DRM_AMDGPU_BO_LIST,
|
||||
&args, sizeof(args));
|
||||
free(list);
|
||||
if (r)
|
||||
if (r) {
|
||||
free(*result);
|
||||
return r;
|
||||
}
|
||||
|
||||
*result = malloc(sizeof(struct amdgpu_bo_list));
|
||||
(*result)->dev = dev;
|
||||
(*result)->handle = args.out.list_handle;
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue