In function amdgpu_userq_signal_ioctl, call function drm_gem_objects_lookup only if the count is valid i.e non zero.
In case of object count is 0 set the pointer to NULL for proper clean up. Signed-off-by: Sunil Khatri <[email protected]> --- .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c index a4fff90b190a..f5069c7fff14 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c @@ -505,19 +505,27 @@ int amdgpu_userq_signal_ioctl(struct drm_device *dev, void *data, } } - r = drm_gem_objects_lookup(filp, - u64_to_user_ptr(args->bo_read_handles), - num_read_bo_handles, - &gobj_read); - if (r) - goto free_syncobj; + if (num_read_bo_handles) { + r = drm_gem_objects_lookup(filp, + u64_to_user_ptr(args->bo_read_handles), + num_read_bo_handles, + &gobj_read); + if (r) + goto free_syncobj; + } else { + gobj_read = NULL; + } - r = drm_gem_objects_lookup(filp, - u64_to_user_ptr(args->bo_write_handles), - num_write_bo_handles, - &gobj_write); - if (r) - goto put_gobj_read; + if (num_write_bo_handles) { + r = drm_gem_objects_lookup(filp, + u64_to_user_ptr(args->bo_write_handles), + num_write_bo_handles, + &gobj_write); + if (r) + goto put_gobj_read; + } else { + gobj_write = NULL; + } /* Retrieve the user queue */ queue = amdgpu_userq_get(userq_mgr, args->queue_id); -- 2.34.1
