Fix leak of memory 32/201432/1
authorlsj119 <lsj119@samsung.com>
Thu, 14 Mar 2019 05:25:38 +0000 (14:25 +0900)
committerlsj119 <lsj119@samsung.com>
Thu, 14 Mar 2019 05:25:38 +0000 (14:25 +0900)
Change-Id: I356c7de3469361a2ebda57abfa402daf64bd6f34

src/tdm_vc4_display.c

index 363df04..c2909a1 100644 (file)
@@ -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);