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: e39d72aec2 ("egl: only take render nodes into account when listing DRM devices")
Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22408>
This commit is contained in:
Patrick Lerda 2023-04-07 18:03:58 +02:00 committed by Marge Bot
parent 1fa1c285fc
commit f9401a515a

View file

@ -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);