From 4eadb333a894105cd80a3031fbd3d0c8889fb9bc Mon Sep 17 00:00:00 2001 From: Boyuan Zhang Date: Mon, 30 Jan 2023 09:28:33 -0500 Subject: [PATCH] radeonsi/vcn: validate fence handle before using it Check if picture fence handle pointer is valid before using. Fixes: 843bdd22 ('radeonsi/vcn: check fence before destroying dpb') Signed-off-by: Boyuan Zhang Reviewed-by: Leo Liu Part-of: --- src/gallium/drivers/radeonsi/radeon_vcn_dec.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c index 5568bc3c511..220db3fc0fe 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c @@ -1871,7 +1871,8 @@ static unsigned rvcn_dec_dynamic_dpb_t2_message(struct radeon_decoder *dec, rvcn } list_for_each_entry_safe(struct rvcn_dec_dynamic_dpb_t2, d, &dec->dpb_unref_list, list) { - dec->ws->fence_wait(dec->ws, dec->prev_fence, PIPE_DEFAULT_DECODER_FEEDBACK_TIMEOUT_NS); + if (dec->prev_fence) + dec->ws->fence_wait(dec->ws, dec->prev_fence, PIPE_DEFAULT_DECODER_FEEDBACK_TIMEOUT_NS); list_del(&d->list); si_vid_destroy_buffer(&d->dpb); FREE(d); @@ -2908,7 +2909,8 @@ static void radeon_dec_end_frame(struct pipe_video_codec *decoder, struct pipe_v dec->send_cmd(dec, target, picture); flush(dec, PIPE_FLUSH_ASYNC, picture->fence); - dec->prev_fence = *picture->fence; + if (picture->fence) + dec->prev_fence = *picture->fence; next_buffer(dec); }