On Tue, Jan 16, 2018 at 10:15 AM, Christian König
<ckoenig.leichtzumer...@gmail.com> wrote:
> Reviewed-by: Christian König <christian.koe...@amd.com>
>
> Do you have commit right by now or should Leo or I commit that for you?

Yes I do.

>
> Thanks for the help,
> Christian.
>
>
> Am 15.01.2018 um 23:03 schrieb Grazvydas Ignotas:
>>
>> Found with the help of following Coccinelle semantic patch:
>> // <smpl>
>> @@
>> expression E;
>> @@
>>
>>    \(pthread_mutex_lock\|mtx_lock\|simple_mtx_lock\)(E)
>>    ...
>> (
>>    \(pthread_mutex_unlock\|mtx_unlock\|simple_mtx_unlock\)(E);
>>    ...
>>    return ...;
>> |
>> + maybe need_unlock(E);
>>    return ...;
>> )
>> // </smpl>
>>
>> Signed-off-by: Grazvydas Ignotas <nota...@gmail.com>
>> ---
>>   src/gallium/state_trackers/va/config.c  | 4 +++-
>>   src/gallium/state_trackers/va/image.c   | 4 +++-
>>   src/gallium/state_trackers/va/picture.c | 4 +++-
>>   3 files changed, 9 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/va/config.c
>> b/src/gallium/state_trackers/va/config.c
>> index 25043d6..7bc031a 100644
>> --- a/src/gallium/state_trackers/va/config.c
>> +++ b/src/gallium/state_trackers/va/config.c
>> @@ -306,12 +306,14 @@ vlVaDestroyConfig(VADriverContextP ctx, VAConfigID
>> config_id)
>>         return VA_STATUS_ERROR_INVALID_CONTEXT;
>>        mtx_lock(&drv->mutex);
>>      config = handle_table_get(drv->htab, config_id);
>>   -   if (!config)
>> +   if (!config) {
>> +      mtx_unlock(&drv->mutex);
>>         return VA_STATUS_ERROR_INVALID_CONFIG;
>> +   }
>>        FREE(config);
>>      handle_table_remove(drv->htab, config_id);
>>      mtx_unlock(&drv->mutex);
>>   diff --git a/src/gallium/state_trackers/va/image.c
>> b/src/gallium/state_trackers/va/image.c
>> index 86ae868..3f892c9 100644
>> --- a/src/gallium/state_trackers/va/image.c
>> +++ b/src/gallium/state_trackers/va/image.c
>> @@ -546,12 +546,14 @@ vlVaPutImage(VADriverContextP ctx, VASurfaceID
>> surface, VAImageID image,
>>                                             tex,
>>                                             0,
>>                                             PIPE_TRANSFER_WRITE |
>>                                             PIPE_TRANSFER_DISCARD_RANGE,
>>                                             &dst_box, &transfer);
>> -            if (map == NULL)
>> +            if (map == NULL) {
>> +               mtx_unlock(&drv->mutex);
>>                  return VA_STATUS_ERROR_OPERATION_FAILED;
>> +            }
>>                 u_copy_nv12_from_yv12((const void * const*) data, pitches,
>> i, j,
>>                                     transfer->stride, tex->array_size,
>>                                     map, dst_box.width, dst_box.height);
>>               pipe_transfer_unmap(drv->pipe, transfer);
>> diff --git a/src/gallium/state_trackers/va/picture.c
>> b/src/gallium/state_trackers/va/picture.c
>> index 8951573..cfcf986 100644
>> --- a/src/gallium/state_trackers/va/picture.c
>> +++ b/src/gallium/state_trackers/va/picture.c
>> @@ -675,13 +675,15 @@ vlVaEndPicture(VADriverContextP ctx, VAContextID
>> context_id)
>>               dst_rect.x1 = src_rect.x1 = surf->templat.width;
>>               dst_rect.y1 = src_rect.y1 = surf->templat.height;
>>               vl_compositor_yuv_deint_full(&drv->cstate, &drv->compositor,
>>                                            old_buf, surf->buffer,
>>                                            &src_rect, &dst_rect,
>> VL_COMPOSITOR_WEAVE);
>> -         } else
>> +         } else {
>>               /* Can't convert from progressive to interlaced yet */
>> +            mtx_unlock(&drv->mutex);
>>               return VA_STATUS_ERROR_INVALID_SURFACE;
>> +         }
>>         }
>>           old_buf->destroy(old_buf);
>>         context->target = surf->buffer;
>>      }
>
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to