[Libva] [PATCH] CreateSurfaces2: forward function return to caller

Xiang, Haihao haihao.xiang at intel.com
Mon Jul 13 23:08:55 PDT 2015


Applied. Please version the patch when resending a new version of a
patch in the future.

Thanks
Haihao


> 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;
>          }
>      }




More information about the Libva mailing list