From f9401a515a4cf75dfea99fe0fc579db0ae80d10e Mon Sep 17 00:00:00 2001 From: Patrick Lerda Date: Fri, 7 Apr 2023 18:03:58 +0200 Subject: [PATCH] egl: fix memory leak related to _eglRefreshDeviceList() Indeed, the unnecessary drmDevice objects were not freed. For instance, this issue could be triggered with: "piglit/bin/egl_ext_platform_device -auto -fbo": SUMMARY: AddressSanitizer: 2796 byte(s) leaked in 12 allocation(s). Fixes: e39d72aec203 ("egl: only take render nodes into account when listing DRM devices") Signed-off-by: Patrick Lerda Reviewed-by: Eric Engestrom Part-of: --- src/egl/main/egldevice.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/egl/main/egldevice.c b/src/egl/main/egldevice.c index 39a123792c8..ba77430811b 100644 --- a/src/egl/main/egldevice.c +++ b/src/egl/main/egldevice.c @@ -284,8 +284,10 @@ _eglRefreshDeviceList(void) num_devs = drmGetDevices2(0, devices, ARRAY_SIZE(devices)); for (int i = 0; i < num_devs; i++) { - if (!(devices[i]->available_nodes & (1 << DRM_NODE_RENDER))) + if (!(devices[i]->available_nodes & (1 << DRM_NODE_RENDER))) { + drmFreeDevice(&devices[i]); continue; + } ret = _eglAddDRMDevice(devices[i], NULL);