From 5d2e9f520f5516f03b30ba0fc6ea42906ead177c Mon Sep 17 00:00:00 2001 From: lsj119 Date: Thu, 14 Mar 2019 14:25:38 +0900 Subject: [PATCH] Fix leak of memory Change-Id: I356c7de3469361a2ebda57abfa402daf64bd6f34 --- src/tdm_vc4_display.c | 49 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/src/tdm_vc4_display.c b/src/tdm_vc4_display.c index 363df04..c2909a1 100644 --- a/src/tdm_vc4_display.c +++ b/src/tdm_vc4_display.c @@ -818,44 +818,73 @@ _tdm_vc4_display_create_layer_list_type(tdm_vc4_data *vc4_data) if (vc4_data->has_atomic) { ret = _vc4_output_get_atomic_prop_id(vc4_data->drm_fd, layer_data->plane_id, DRM_MODE_OBJECT_PLANE, "FB_ID", &layer_data->atomic_props_ids.fb_id); - if (ret != TDM_ERROR_NONE) + if (ret != TDM_ERROR_NONE) { + free(layer_data); goto failed_atomic_prop_id; + } + ret = _vc4_output_get_atomic_prop_id(vc4_data->drm_fd, layer_data->plane_id, DRM_MODE_OBJECT_PLANE, "CRTC_ID", &layer_data->atomic_props_ids.crtc_id); - if (ret != TDM_ERROR_NONE) + if (ret != TDM_ERROR_NONE) { + free(layer_data); goto failed_atomic_prop_id; + } + ret = _vc4_output_get_atomic_prop_id(vc4_data->drm_fd, layer_data->plane_id, DRM_MODE_OBJECT_PLANE, "SRC_X", &layer_data->atomic_props_ids.src_x); - if (ret != TDM_ERROR_NONE) + if (ret != TDM_ERROR_NONE) { + free(layer_data); goto failed_atomic_prop_id; + } + ret = _vc4_output_get_atomic_prop_id(vc4_data->drm_fd, layer_data->plane_id, DRM_MODE_OBJECT_PLANE, "SRC_Y", &layer_data->atomic_props_ids.src_y); - if (ret != TDM_ERROR_NONE) + if (ret != TDM_ERROR_NONE) { + free(layer_data); goto failed_atomic_prop_id; + } + ret = _vc4_output_get_atomic_prop_id(vc4_data->drm_fd, layer_data->plane_id, DRM_MODE_OBJECT_PLANE, "SRC_W", &layer_data->atomic_props_ids.src_w); - if (ret != TDM_ERROR_NONE) + if (ret != TDM_ERROR_NONE) { + free(layer_data); goto failed_atomic_prop_id; + } + ret = _vc4_output_get_atomic_prop_id(vc4_data->drm_fd, layer_data->plane_id, DRM_MODE_OBJECT_PLANE, "SRC_H", &layer_data->atomic_props_ids.src_h); - if (ret != TDM_ERROR_NONE) + if (ret != TDM_ERROR_NONE) { + free(layer_data); goto failed_atomic_prop_id; + } + ret = _vc4_output_get_atomic_prop_id(vc4_data->drm_fd, layer_data->plane_id, DRM_MODE_OBJECT_PLANE, "CRTC_X", &layer_data->atomic_props_ids.crtc_x); - if (ret != TDM_ERROR_NONE) + if (ret != TDM_ERROR_NONE) { + free(layer_data); goto failed_atomic_prop_id; + } + ret = _vc4_output_get_atomic_prop_id(vc4_data->drm_fd, layer_data->plane_id, DRM_MODE_OBJECT_PLANE, "CRTC_Y", &layer_data->atomic_props_ids.crtc_y); - if (ret != TDM_ERROR_NONE) + if (ret != TDM_ERROR_NONE) { + free(layer_data); goto failed_atomic_prop_id; + } + ret = _vc4_output_get_atomic_prop_id(vc4_data->drm_fd, layer_data->plane_id, DRM_MODE_OBJECT_PLANE, "CRTC_W", &layer_data->atomic_props_ids.crtc_w); - if (ret != TDM_ERROR_NONE) + if (ret != TDM_ERROR_NONE) { + free(layer_data); goto failed_atomic_prop_id; + } + ret = _vc4_output_get_atomic_prop_id(vc4_data->drm_fd, layer_data->plane_id, DRM_MODE_OBJECT_PLANE, "CRTC_H", &layer_data->atomic_props_ids.crtc_h); - if (ret != TDM_ERROR_NONE) + if (ret != TDM_ERROR_NONE) { + free(layer_data); goto failed_atomic_prop_id; + } } LIST_ADDTAIL(&layer_data->link, &output_data->layer_list); -- 2.7.4