drm/amdgpu: Fix error handling in amdgpu_ras_recovery_init
authorFelix Kuehling <Felix.Kuehling@amd.com>
Thu, 3 Oct 2019 21:54:57 +0000 (17:54 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 7 Oct 2019 20:09:33 +0000 (15:09 -0500)
Don't set a struct pointer to NULL before freeing its members. It's
hard to see what's happening due to a local pointer-to-pointer data
aliasing con->eh_data.

Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Tested-by: Philip Cox <Philip.Cox@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c

index 486568ded6d6a72b542f03ba67aa1d602b0e8bcc..0e2ee5869b5f0598877e73f9fc13dc8efeb0f2f8 100644 (file)
@@ -1542,10 +1542,10 @@ int amdgpu_ras_recovery_init(struct amdgpu_device *adev)
 release:
        amdgpu_ras_release_bad_pages(adev);
 free:
-       con->eh_data = NULL;
        kfree((*data)->bps);
        kfree((*data)->bps_bo);
        kfree(*data);
+       con->eh_data = NULL;
 out:
        DRM_WARN("Failed to initialize ras recovery!\n");