drm/amdgpu: fix error handling in amdgpu_bo_do_create
authorChristian König <christian.koenig@amd.com>
Tue, 31 Oct 2017 08:36:13 +0000 (09:36 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 5 Dec 2017 10:26:35 +0000 (11:26 +0100)
commit a695e43712242c354748e9bae5d137d4337a7694 upstream.

The bo structure is freed up in case of an error, so we can't do any
accounting if that happens.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c

index 9e495da0bb03c8b4946aa84f1966a951c5639300..ffe4839803623b3abf2ee28acfb77c02e4bec198 100644 (file)
@@ -391,6 +391,9 @@ int amdgpu_bo_create_restricted(struct amdgpu_device *adev,
        r = ttm_bo_init_reserved(&adev->mman.bdev, &bo->tbo, size, type,
                                 &bo->placement, page_align, !kernel, NULL,
                                 acc_size, sg, resv, &amdgpu_ttm_bo_destroy);
+       if (unlikely(r != 0))
+               return r;
+
        bytes_moved = atomic64_read(&adev->num_bytes_moved) -
                      initial_bytes_moved;
        if (adev->mc.visible_vram_size < adev->mc.real_vram_size &&
@@ -400,9 +403,6 @@ int amdgpu_bo_create_restricted(struct amdgpu_device *adev,
        else
                amdgpu_cs_report_moved_bytes(adev, bytes_moved, 0);
 
-       if (unlikely(r != 0))
-               return r;
-
        if (kernel)
                bo->tbo.priority = 1;