From 12b3d9ef379e6159e30c2aafc040f1137cd4141a Mon Sep 17 00:00:00 2001 From: Xu Guangxin Date: Wed, 1 Jul 2015 09:49:11 +0800 Subject: [PATCH] CreateSurfaces2: forward function return to caller we did not check following function's return: i965_surface_native_memory i965_suface_external_memory i965_check_alloc_surface_bo It will be in trouble if underlay buffer allocation is failed. --- src/i965_drv_video.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c index cfaab32..4ba87f8 100644 --- a/src/i965_drv_video.c +++ b/src/i965_drv_video.c @@ -989,9 +989,7 @@ i965_surface_native_memory(VADriverContextP ctx, expected_fourcc == VA_FOURCC_YV16) tiling = 0; - i965_check_alloc_surface_bo(ctx, obj_surface, tiling, expected_fourcc, get_sampling_from_fourcc(expected_fourcc)); - - return VA_STATUS_SUCCESS; + return i965_check_alloc_surface_bo(ctx, obj_surface, tiling, expected_fourcc, get_sampling_from_fourcc(expected_fourcc)); } static VAStatus @@ -1327,19 +1325,23 @@ i965_CreateSurfaces2( } } } - i965_surface_native_memory(ctx, - obj_surface, - format, - expected_fourcc); + vaStatus = i965_surface_native_memory(ctx, + obj_surface, + format, + expected_fourcc); break; case I965_SURFACE_MEM_GEM_FLINK: case I965_SURFACE_MEM_DRM_PRIME: - i965_suface_external_memory(ctx, - obj_surface, - memory_type, - memory_attibute, - i); + vaStatus = i965_suface_external_memory(ctx, + obj_surface, + memory_type, + memory_attibute, + i); + break; + } + if (VA_STATUS_SUCCESS != vaStatus) { + i965_destroy_surface(&i965->surface_heap, (struct object_base *)obj_surface); break; } } -- 2.11.0