summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2017-10-19 17:28:53 +0200
committerMichel Dänzer <michel@daenzer.net>2017-10-20 10:34:34 +0200
commit9d84934309e4ccd9a43c73d958b8ff10ef2fc990 (patch)
tree5aa8c4a07ba858876fd136e23f7695ae4729c0af
parentb67a2b62b20c17db7471f5bbea591ab55806cb29 (diff)
Free pAMDGPUEnt memory in AMDGPUFreeRec
We were freeing it earlier but then still trying to access it in AMDGPUFreeRec. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--src/amdgpu_kms.c2
-rw-r--r--src/amdgpu_probe.c8
2 files changed, 4 insertions, 6 deletions
diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c
index 3598dd2..44a99b5 100644
--- a/src/amdgpu_kms.c
+++ b/src/amdgpu_kms.c
@@ -138,6 +138,8 @@ static void AMDGPUFreeRec(ScrnInfoPtr pScrn)
if (!pAMDGPUEnt->fd_ref) {
amdgpu_device_deinitialize(pAMDGPUEnt->pDev);
amdgpu_kernel_close_fd(pAMDGPUEnt);
+ free(pPriv->ptr);
+ pPriv->ptr = NULL;
}
}
diff --git a/src/amdgpu_probe.c b/src/amdgpu_probe.c
index fb62cb8..e446539 100644
--- a/src/amdgpu_probe.c
+++ b/src/amdgpu_probe.c
@@ -227,7 +227,7 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct pci_device *pci_dev)
pAMDGPUEnt = pPriv->ptr;
if (!amdgpu_open_drm_master(pScrn, pAMDGPUEnt, busid))
- goto error_fd;
+ goto error;
pAMDGPUEnt->fd_ref = 1;
@@ -255,8 +255,6 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct pci_device *pci_dev)
error_amdgpu:
amdgpu_kernel_close_fd(pAMDGPUEnt);
-error_fd:
- free(pPriv->ptr);
error:
free(busid);
return FALSE;
@@ -352,7 +350,7 @@ amdgpu_platform_probe(DriverPtr pDriver,
pAMDGPUEnt->platform_dev = dev;
pAMDGPUEnt->fd = amdgpu_kernel_open_fd(pScrn, busid, dev);
if (pAMDGPUEnt->fd < 0)
- goto error_fd;
+ goto error;
pAMDGPUEnt->fd_ref = 1;
@@ -380,8 +378,6 @@ amdgpu_platform_probe(DriverPtr pDriver,
error_amdgpu:
amdgpu_kernel_close_fd(pAMDGPUEnt);
-error_fd:
- free(pPriv->ptr);
error:
free(busid);
return FALSE;