mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
radeon/vcn: set dec->bs_ptr = NULL on unmap
To avoid using a dangling pointer.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/1308
Cc: mesa-stable
Reviewed-by: Boyuan Zhang <boyuan.zhang@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6556>
(cherry picked from commit 7d853966df)
This commit is contained in:
parent
2dc3d4c648
commit
6a766857a4
3 changed files with 7 additions and 1 deletions
|
|
@ -220,7 +220,7 @@
|
|||
"description": "radeon/vcn: set dec->bs_ptr = NULL on unmap",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -940,6 +940,7 @@ static struct pb_buffer *rvcn_dec_message_decode(struct radeon_decoder *dec,
|
|||
PIPE_TRANSFER_WRITE | RADEON_TRANSFER_TEMPORARY);
|
||||
fill_probs_table(ptr);
|
||||
dec->ws->buffer_unmap(dec->ctx.res->buf);
|
||||
dec->bs_ptr = NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -1053,6 +1054,7 @@ static void send_msg_buf(struct radeon_decoder *dec)
|
|||
|
||||
/* unmap the buffer */
|
||||
dec->ws->buffer_unmap(buf->res->buf);
|
||||
dec->bs_ptr = NULL;
|
||||
dec->msg = NULL;
|
||||
dec->fb = NULL;
|
||||
dec->it = NULL;
|
||||
|
|
@ -1343,6 +1345,7 @@ static void radeon_dec_decode_bitstream(struct pipe_video_codec *decoder,
|
|||
|
||||
if (new_size > buf->res->buf->size) {
|
||||
dec->ws->buffer_unmap(buf->res->buf);
|
||||
dec->bs_ptr = NULL;
|
||||
if (!si_vid_resize_buffer(dec->screen, dec->cs, buf, new_size)) {
|
||||
RVID_ERR("Can't resize bitstream buffer!");
|
||||
return;
|
||||
|
|
@ -1376,6 +1379,7 @@ void send_cmd_dec(struct radeon_decoder *dec, struct pipe_video_buffer *target,
|
|||
|
||||
memset(dec->bs_ptr, 0, align(dec->bs_size, 128) - dec->bs_size);
|
||||
dec->ws->buffer_unmap(bs_buf->res->buf);
|
||||
dec->bs_ptr = NULL;
|
||||
|
||||
map_msg_fb_it_probs_buf(dec);
|
||||
dt = rvcn_dec_message_decode(dec, target, picture);
|
||||
|
|
@ -1535,6 +1539,7 @@ struct pipe_video_codec *radeon_create_decoder(struct pipe_context *context,
|
|||
ptr += FB_BUFFER_OFFSET + FB_BUFFER_SIZE;
|
||||
fill_probs_table(ptr);
|
||||
dec->ws->buffer_unmap(buf->res->buf);
|
||||
dec->bs_ptr = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -288,6 +288,7 @@ void send_cmd_jpeg(struct radeon_decoder *dec, struct pipe_video_buffer *target,
|
|||
|
||||
memset(dec->bs_ptr, 0, align(dec->bs_size, 128) - dec->bs_size);
|
||||
dec->ws->buffer_unmap(bs_buf->res->buf);
|
||||
dec->bs_ptr = NULL;
|
||||
|
||||
dt = radeon_jpeg_get_decode_param(dec, target, picture);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue