[PATCH xf86-video-amdgpu 1/4] Free pAMDGPUEnt memory in AMDGPUFreeRec

Michel Dänzer michel at daenzer.net
Thu Oct 19 16:05:33 UTC 2017


From: Michel Dänzer <michel.daenzer at amd.com>

We were freeing it earlier but then still trying to access it in
AMDGPUFreeRec.

Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
---
 src/amdgpu_kms.c   | 2 ++
 src/amdgpu_probe.c | 8 ++------
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c
index 3598dd23f..44a99b564 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 fb62cb811..e446539d6 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;
-- 
2.14.2



More information about the amd-gfx mailing list