[RESEND PATCH libdrm] tests: fix memory leak issue
Eric Engestrom
eric.engestrom at imgtec.com
Tue Mar 20 14:17:33 UTC 2018
On Tuesday, 2018-03-20 12:47:33 +0900, Inki Dae wrote:
> Fixed memory leak issue to drmModeRes and drmModePlaneRes objects.
>
> These objects were allocated by drmModeGetResources and
> drmModeGetPlaneResources functions but not freed properly.
>
> So this patch frees them by calling drmModeFreeResources
> drmModeFreePlaneResources functions at failure case.
>
> Signed-off-by: Inki Dae <inki.dae at samsung.com>
Good catch, thanks!
R-b and pushed, since I'm not sure you have commit access on libdrm :)
> ---
> tests/kms/libkms-test-device.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/tests/kms/libkms-test-device.c b/tests/kms/libkms-test-device.c
> index 53c7349..042ae05 100644
> --- a/tests/kms/libkms-test-device.c
> +++ b/tests/kms/libkms-test-device.c
> @@ -67,7 +67,7 @@ static void kms_device_probe_screens(struct kms_device *device)
>
> device->screens = calloc(res->count_connectors, sizeof(screen));
> if (!device->screens)
> - return;
> + goto err_free_resources;
>
> for (i = 0; i < res->count_connectors; i++) {
> unsigned int *count;
> @@ -97,6 +97,7 @@ static void kms_device_probe_screens(struct kms_device *device)
> device->num_screens++;
> }
>
> +err_free_resources:
> drmModeFreeResources(res);
> }
>
> @@ -112,7 +113,7 @@ static void kms_device_probe_crtcs(struct kms_device *device)
>
> device->crtcs = calloc(res->count_crtcs, sizeof(crtc));
> if (!device->crtcs)
> - return;
> + goto err_free_resources;
>
> for (i = 0; i < res->count_crtcs; i++) {
> crtc = kms_crtc_create(device, res->crtcs[i]);
> @@ -123,6 +124,7 @@ static void kms_device_probe_crtcs(struct kms_device *device)
> device->num_crtcs++;
> }
>
> +err_free_resources:
> drmModeFreeResources(res);
> }
>
> @@ -138,7 +140,7 @@ static void kms_device_probe_planes(struct kms_device *device)
>
> device->planes = calloc(res->count_planes, sizeof(plane));
> if (!device->planes)
> - return;
> + goto err_free_resources;
>
> for (i = 0; i < res->count_planes; i++) {
> plane = kms_plane_create(device, res->planes[i]);
> @@ -149,6 +151,7 @@ static void kms_device_probe_planes(struct kms_device *device)
> device->num_planes++;
> }
>
> +err_free_resources:
> drmModeFreePlaneResources(res);
> }
>
> --
> 1.9.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list