[Mesa-dev] [PATCH] st/va: restore old buffer format on error

Christian König christian.koenig at amd.com
Tue May 31 12:51:53 UTC 2016


Yeah, that solution looks more correct to me.

Christian.

Am 31.05.2016 um 14:44 schrieb Julien Isorce:
> Hi,
> Thx for looking at it but are you sure your diff compiles ?
>
> Can you try this instead:
>
> --- a/src/gallium/state_trackers/va/image.c
> +++ b/src/gallium/state_trackers/va/image.c
> @@ -471,19 +471,19 @@ vlVaPutImage(VADriverContextP ctx, VASurfaceID 
> surface, VAImageID image,
>
>     if (format != surf->buffer->buffer_format) {
>        struct pipe_video_buffer *tmp_buf;
> -      enum pipe_format old_surf_format = surf->templat.buffer_format;
> +      struct pipe_video_buffer templat = surf->templat;
>
> -      surf->templat.buffer_format = format;
> -      tmp_buf = drv->pipe->create_video_buffer(drv->pipe, 
> &surf->templat);
> +      templat.buffer_format = format;
> +      tmp_buf = drv->pipe->create_video_buffer(drv->pipe, &templat);
>
>        if (!tmp_buf) {
> -         surf->templat.buffer_format = old_surf_format;
>           pipe_mutex_unlock(drv->mutex);
>           return VA_STATUS_ERROR_ALLOCATION_FAILED;
>        }
>
>        surf->buffer->destroy(surf->buffer);
>        surf->buffer = tmp_buf;
> +      surf->templat.buffer_format = format;
>     }
>
> Cheers
> Julien
>
>
> On 31 May 2016 at 08:43, Christian König <christian.koenig at amd.com 
> <mailto:christian.koenig at amd.com>> wrote:
>
>     Am 31.05.2016 um 03:24 schrieb Eric Engestrom:
>
>         CoverityID: 1337953
>
>         Signed-off-by: Eric Engestrom <eric at engestrom.ch
>         <mailto:eric at engestrom.ch>>
>         ---
>
>         Note that I do not know this code at all; I'm blindly
>         following Coverity's advice on this one :]
>
>
>     Well and that is completely nonsense. The buffer was already
>     reallocated when this error happens and so resetting the template
>     to the original value is incorrect and actually rather dangerous.
>
>     Why does Coverity things that we should add this? And how can we
>     fix this?
>
>     Regards,
>     Christian.
>
>
>         ---
>           src/gallium/state_trackers/va/image.c | 1 +
>           1 file changed, 1 insertion(+)
>
>         diff --git a/src/gallium/state_trackers/va/image.c
>         b/src/gallium/state_trackers/va/image.c
>         index 92d014c..8cfe17a 100644
>         --- a/src/gallium/state_trackers/va/image.c
>         +++ b/src/gallium/state_trackers/va/image.c
>         @@ -490,6 +490,7 @@ vlVaPutImage(VADriverContextP ctx,
>         VASurfaceID surface, VAImageID image,
>                views =
>         surf->buffer->get_sampler_view_planes(surf->buffer);
>              if (!views) {
>         +      surf->templat.buffer_format = old_surf_format;
>                 pipe_mutex_unlock(drv->mutex);
>                 return VA_STATUS_ERROR_OPERATION_FAILED;
>              }
>
>
>     _______________________________________________
>     mesa-dev mailing list
>     mesa-dev at lists.freedesktop.org <mailto:mesa-dev at lists.freedesktop.org>
>     https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160531/c46f5b33/attachment-0001.html>


More information about the mesa-dev mailing list