diff options
author | Dave Airlie <airlied@redhat.com> | 2016-05-03 12:44:29 +1000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-05-11 11:21:38 +0200 |
commit | 258868e6b953083e459f1e98679cf581889361c2 (patch) | |
tree | fb6176fa7db9c530d3b350eca7eb8378a5177cc8 | |
parent | bdc6a007a3252d2d7be325fe6198b0ffd73ae6f5 (diff) | |
download | lwn-258868e6b953083e459f1e98679cf581889361c2.tar.gz lwn-258868e6b953083e459f1e98679cf581889361c2.zip |
drm/amdgpu: set metadata pointer to NULL after freeing.
commit 0092d3edcb23fcdb8cbe4159ba94a534290ff982 upstream.
Without this there was a double free of the metadata,
which ended up freeing the fd table for me here, and taking
out the machine more often than not.
I reproduced with X.org + modesetting DDX + latest llvm/mesa,
also required using dri3.
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index b8fbbd7699e4..73628c7599e7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -540,6 +540,7 @@ int amdgpu_bo_set_metadata (struct amdgpu_bo *bo, void *metadata, if (!metadata_size) { if (bo->metadata_size) { kfree(bo->metadata); + bo->metadata = NULL; bo->metadata_size = 0; } return 0; |