[PATCH xf86-video-amdgpu] Free previous xf86CrtcRec gamma LUT memory

Michel Dänzer michel at daenzer.net
Thu Jul 19 09:37:11 UTC 2018


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

We were leaking it.

Also, don't bother allocating new memory if it's already the expected
size.

Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
---
 src/drmmode_display.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 1aefd199b..e947ca979 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -3629,13 +3629,18 @@ Bool drmmode_setup_colormap(ScreenPtr pScreen, ScrnInfoPtr pScrn)
 
 			for (i = 0; i < xf86_config->num_crtc; i++) {
 				xf86CrtcPtr crtc = xf86_config->crtc[i];
-				void *gamma = malloc(1024 * 3 * sizeof(CARD16));
+				void *gamma;
 
+				if (crtc->gamma_size == 1024)
+					continue;
+
+				gamma = malloc(1024 * 3 * sizeof(CARD16));
 				if (!gamma) {
 					ErrorF("Failed to allocate gamma LUT memory\n");
 					return FALSE;
 				}
 
+				free(crtc->gamma_red);
 				crtc->gamma_size = 1024;
 				crtc->gamma_red = gamma;
 				crtc->gamma_green = crtc->gamma_red + crtc->gamma_size;
-- 
2.18.0



More information about the amd-gfx mailing list