From: Michel Dänzer <michel.daenzer@xxxxxxx> 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