drm/amdgpu: check memory allocation failure
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Wed, 23 Aug 2017 05:52:36 +0000 (07:52 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 24 Aug 2017 18:27:43 +0000 (14:27 -0400)
Check memory allocation failure and return -ENOMEM in such a case.

'num_post_dep_syncobjs' still has to be set to 0 before the test in order
to have it initialized if 'amdgpu_cs_parser_fini()' is called to free
resources.

The calling graph would be, in such a case!
   failure in amdgpu_cs_process_syncobj_out_dep()
      ---> error code returned by amdgpu_cs_dependencies()
         --> amdgpu_cs_parser_fini() is called

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c

index 15d4a28d73bb53d36d446e88e2cf0e8473376b53..baa90df90aead255904de949d132ecd93ea934e8 100644 (file)
@@ -1079,6 +1079,9 @@ static int amdgpu_cs_process_syncobj_out_dep(struct amdgpu_cs_parser *p,
                                             GFP_KERNEL);
        p->num_post_dep_syncobjs = 0;
 
+       if (!p->post_dep_syncobjs)
+               return -ENOMEM;
+
        for (i = 0; i < num_deps; ++i) {
                p->post_dep_syncobjs[i] = drm_syncobj_find(p->filp, deps[i].handle);
                if (!p->post_dep_syncobjs[i])