xf86-video-amdgpu: Branch 'master' - 4 commits
Michel Dänzer
daenzer at kemper.freedesktop.org
Fri Oct 20 13:53:40 UTC 2017
src/amdgpu_kms.c | 22 ++++++++++++++++------
src/amdgpu_probe.c | 14 ++++++--------
src/drmmode_display.c | 4 ++--
3 files changed, 24 insertions(+), 16 deletions(-)
New commits:
commit f6b39bcd45cb06976ba8a3600df77fc471c63995
Author: Michel Dänzer <michel.daenzer at amd.com>
Date: Thu Oct 19 18:02:05 2017 +0200
Always call drmModeFreeProperty after drmModeGetProperty
We were not doing so in all cases, leaking memory allocated by the
latter.
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 3cbf2bd..2cef93c 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1891,8 +1891,8 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, drmModeResPtr mode_r
drmModeFreeProperty(props);
break;
}
- drmModeFreeProperty(props);
}
+ drmModeFreeProperty(props);
}
kencoders = calloc(sizeof(drmModeEncoderPtr), koutput->count_encoders);
@@ -1986,8 +1986,8 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, drmModeResPtr mode_r
drmModeFreeProperty(props);
break;
}
- drmModeFreeProperty(props);
}
+ drmModeFreeProperty(props);
}
if (dynamic) {
commit 84aad09f18fed6b52b0c073f0bbd675a6de07807
Author: Michel Dänzer <michel.daenzer at amd.com>
Date: Thu Oct 19 17:54:13 2017 +0200
Call TimerFree for timer created in LeaveVT
We were leaking the memory allocated by TimerSet.
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c
index 7d58209..cb0fb3b 100644
--- a/src/amdgpu_kms.c
+++ b/src/amdgpu_kms.c
@@ -1624,6 +1624,7 @@ CARD32 cleanup_black_fb(OsTimerPtr timer, CARD32 now, pointer data)
drmmode_fb_reference(pAMDGPUEnt->fd, &drmmode_crtc->fb, NULL);
}
+ TimerFree(timer);
return 0;
}
commit cfccf4c4e7e5c73fe4040fabeb1b43283cf29b33
Author: Michel Dänzer <michel.daenzer at amd.com>
Date: Thu Oct 19 17:41:44 2017 +0200
Free memory returned by xf86GetEntityInfo
We were leaking it.
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c
index 44a99b5..7d58209 100644
--- a/src/amdgpu_kms.c
+++ b/src/amdgpu_kms.c
@@ -116,16 +116,24 @@ static void AMDGPUFreeRec(ScrnInfoPtr pScrn)
DevUnion *pPriv;
AMDGPUEntPtr pAMDGPUEnt;
AMDGPUInfoPtr info;
+ EntityInfoPtr pEnt;
if (!pScrn)
return;
info = AMDGPUPTR(pScrn);
- if (info && info->fbcon_pixmap)
- pScrn->pScreen->DestroyPixmap(info->fbcon_pixmap);
+ if (info) {
+ if (info->fbcon_pixmap)
+ pScrn->pScreen->DestroyPixmap(info->fbcon_pixmap);
- pPriv = xf86GetEntityPrivate(xf86GetEntityInfo(pScrn->entityList[pScrn->numEntities - 1])->index,
- gAMDGPUEntityIndex);
+ pEnt = info->pEnt;
+ free(pScrn->driverPrivate);
+ pScrn->driverPrivate = NULL;
+ } else {
+ pEnt = xf86GetEntityInfo(pScrn->entityList[pScrn->numEntities - 1]);
+ }
+
+ pPriv = xf86GetEntityPrivate(pEnt->index, gAMDGPUEntityIndex);
pAMDGPUEnt = pPriv->ptr;
if (pAMDGPUEnt->fd > 0) {
DevUnion *pPriv;
@@ -143,8 +151,7 @@ static void AMDGPUFreeRec(ScrnInfoPtr pScrn)
}
}
- free(pScrn->driverPrivate);
- pScrn->driverPrivate = NULL;
+ free(pEnt);
}
static void *amdgpuShadowWindow(ScreenPtr screen, CARD32 row, CARD32 offset,
diff --git a/src/amdgpu_probe.c b/src/amdgpu_probe.c
index e446539..0217060 100644
--- a/src/amdgpu_probe.c
+++ b/src/amdgpu_probe.c
@@ -177,7 +177,7 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct pci_device *pci_dev)
{
ScrnInfoPtr pScrn = NULL;
char *busid;
- EntityInfoPtr pEnt;
+ EntityInfoPtr pEnt = NULL;
DevUnion *pPriv;
AMDGPUEntPtr pAMDGPUEnt;
@@ -256,6 +256,7 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct pci_device *pci_dev)
error_amdgpu:
amdgpu_kernel_close_fd(pAMDGPUEnt);
error:
+ free(pEnt);
free(busid);
return FALSE;
}
@@ -294,7 +295,7 @@ amdgpu_platform_probe(DriverPtr pDriver,
ScrnInfoPtr pScrn;
int scr_flags = 0;
char *busid;
- EntityInfoPtr pEnt;
+ EntityInfoPtr pEnt = NULL;
DevUnion *pPriv;
AMDGPUEntPtr pAMDGPUEnt;
@@ -379,6 +380,7 @@ amdgpu_platform_probe(DriverPtr pDriver,
error_amdgpu:
amdgpu_kernel_close_fd(pAMDGPUEnt);
error:
+ free(pEnt);
free(busid);
return FALSE;
}
commit 9d84934309e4ccd9a43c73d958b8ff10ef2fc990
Author: Michel Dänzer <michel.daenzer at amd.com>
Date: Thu Oct 19 17:28:53 2017 +0200
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 at amd.com>
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;
More information about the xorg-commit
mailing list