[Libva] [libva-intel-driver PATCH] Make sure the pointer is valid before dereferencing it

Zhao Yakui yakui.zhao at intel.com
Tue Sep 22 22:53:09 PDT 2015


On 09/23/2015 01:52 PM, Xiang, Haihao wrote:
> Signed-off-by: Xiang, Haihao<haihao.xiang at intel.com>

This looks good to me.

Thanks.
    Yakui
> ---
>   src/gen9_mfc_hevc.c | 20 +++++++++++++-------
>   1 file changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/src/gen9_mfc_hevc.c b/src/gen9_mfc_hevc.c
> index 46f8c59..2752bb8 100644
> --- a/src/gen9_mfc_hevc.c
> +++ b/src/gen9_mfc_hevc.c
> @@ -1992,10 +1992,13 @@ VAStatus intel_hcpe_hevc_prepare(VADriverContextP ctx,
>           obj_surface->free_private_data = (void *)gen_free_hevc_surface;
>       }
>       hevc_encoder_surface = (GenHevcSurface *) obj_surface->private_data;
> -    hevc_encoder_surface->base.frame_store_id = -1;
> -    mfc_context->current_collocated_mv_temporal_buffer[NUM_HCP_CURRENT_COLLOCATED_MV_TEMPORAL_BUFFERS - 1].bo = hevc_encoder_surface->motion_vector_temporal_bo;
>
> -    dri_bo_reference(hevc_encoder_surface->motion_vector_temporal_bo);
> +    if (hevc_encoder_surface) {
> +        hevc_encoder_surface->base.frame_store_id = -1;
> +        mfc_context->current_collocated_mv_temporal_buffer[NUM_HCP_CURRENT_COLLOCATED_MV_TEMPORAL_BUFFERS - 1].bo = hevc_encoder_surface->motion_vector_temporal_bo;
> +
> +        dri_bo_reference(hevc_encoder_surface->motion_vector_temporal_bo);
> +    }
>
>       mfc_context->surface_state.width = obj_surface->orig_width;
>       mfc_context->surface_state.height = obj_surface->orig_height;
> @@ -2038,10 +2041,13 @@ VAStatus intel_hcpe_hevc_prepare(VADriverContextP ctx,
>               }
>
>               hevc_encoder_surface = (GenHevcSurface *) obj_surface->private_data;
> -            hevc_encoder_surface->base.frame_store_id = -1;
> -            /* Setup MV temporal buffer */
> -            mfc_context->current_collocated_mv_temporal_buffer[i].bo = hevc_encoder_surface->motion_vector_temporal_bo;
> -            dri_bo_reference(hevc_encoder_surface->motion_vector_temporal_bo);
> +
> +            if (hevc_encoder_surface) {
> +                hevc_encoder_surface->base.frame_store_id = -1;
> +                /* Setup MV temporal buffer */
> +                mfc_context->current_collocated_mv_temporal_buffer[i].bo = hevc_encoder_surface->motion_vector_temporal_bo;
> +                dri_bo_reference(hevc_encoder_surface->motion_vector_temporal_bo);
> +            }
>           } else {
>               break;
>           }



More information about the Libva mailing list