drm/amdgpu: return error if both BOs and bo_list handle is given
authorChristian König <christian.koenig@amd.com>
Mon, 30 Jul 2018 14:18:54 +0000 (16:18 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 31 Jul 2018 21:58:17 +0000 (16:58 -0500)
Return -EINVAL when both the BOs as well as a list handle is provided in
the IOCTL.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Reviewed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c

index 8a49c3b97bd43651218cb6327bce32d23fe6b0eb..d41cea78e4aa7e565ed8f2a43ec65248ee39e681 100644 (file)
@@ -572,14 +572,17 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
        INIT_LIST_HEAD(&p->validated);
 
        /* p->bo_list could already be assigned if AMDGPU_CHUNK_ID_BO_HANDLES is present */
-       if (p->bo_list) {
-               mutex_lock(&p->bo_list->lock);
+       if (cs->in.bo_list_handle) {
+               if (p->bo_list)
+                       return -EINVAL;
 
-       } else if (cs->in.bo_list_handle) {
                r = amdgpu_bo_list_get(fpriv, cs->in.bo_list_handle,
                                       &p->bo_list);
                if (r)
                        return r;
+
+       } else if (p->bo_list) {
+               mutex_lock(&p->bo_list->lock);
        }
 
        if (p->bo_list) {