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

Reply via email to