[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