radeonsi/vcn: Fix some small coverity issues
* 1619409 Resource leak - fix leak when mapping encode bitstream buffer fails * 1619403 Dereference after null check - remove size ptr NULL check in radeon_enc_get_feedback, can't be NULL * 1434887 Out-of-bounds access - use correct variable for memset in get_vp9_msg * 1619400 'Constant' variable guards dead code - remove code handling frame_mbs_only_flag == 0, hardcoded to true Reviewed-by: Leo Liu <leo.liu@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31558>
This commit is contained in:
@@ -541,7 +541,7 @@ static rvcn_dec_message_vp9_t get_vp9_msg(struct radeon_decoder *dec,
|
||||
|
||||
prbs->seg.abs_delta = pic->picture_parameter.abs_delta;
|
||||
} else
|
||||
memset(&prbs->seg, 0, 256);
|
||||
memset(prbs->segment_data, 0, sizeof(prbs->segment_data));
|
||||
|
||||
result.frame_header_flags = (pic->picture_parameter.pic_fields.frame_type
|
||||
<< RDECODE_FRAME_HDR_INFO_VP9_FRAME_TYPE_SHIFT) &
|
||||
|
||||
@@ -1557,6 +1557,7 @@ static void *radeon_vcn_enc_encode_headers(struct radeon_encoder *enc)
|
||||
PIPE_MAP_WRITE | RADEON_MAP_TEMPORARY);
|
||||
if (!ptr) {
|
||||
RVID_ERR("Can't map bs buffer.\n");
|
||||
FREE(data);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1667,15 +1668,13 @@ static void radeon_enc_get_feedback(struct pipe_video_codec *encoder, void *feed
|
||||
struct radeon_encoder *enc = (struct radeon_encoder *)encoder;
|
||||
struct rvid_buffer *fb = feedback;
|
||||
|
||||
if (size) {
|
||||
uint32_t *ptr = enc->ws->buffer_map(enc->ws, fb->res->buf, &enc->cs,
|
||||
PIPE_MAP_READ_WRITE | RADEON_MAP_TEMPORARY);
|
||||
if (ptr[1])
|
||||
*size = ptr[6] - ptr[8];
|
||||
else
|
||||
*size = 0;
|
||||
enc->ws->buffer_unmap(enc->ws, fb->res->buf);
|
||||
}
|
||||
uint32_t *ptr = enc->ws->buffer_map(enc->ws, fb->res->buf, &enc->cs,
|
||||
PIPE_MAP_READ_WRITE | RADEON_MAP_TEMPORARY);
|
||||
if (ptr[1])
|
||||
*size = ptr[6] - ptr[8];
|
||||
else
|
||||
*size = 0;
|
||||
enc->ws->buffer_unmap(enc->ws, fb->res->buf);
|
||||
|
||||
metadata->present_metadata = PIPE_VIDEO_FEEDBACK_METADATA_TYPE_CODEC_UNIT_LOCATION;
|
||||
|
||||
|
||||
@@ -230,12 +230,7 @@ unsigned int radeon_enc_write_sps(struct radeon_encoder *enc, uint8_t nal_byte,
|
||||
radeon_enc_code_fixed_bits(enc, sps->gaps_in_frame_num_value_allowed_flag, 1);
|
||||
radeon_enc_code_ue(enc, (pic->session_init.aligned_picture_width / 16 - 1));
|
||||
radeon_enc_code_ue(enc, (pic->session_init.aligned_picture_height / 16 - 1));
|
||||
bool frame_mbs_only_flag = true;
|
||||
radeon_enc_code_fixed_bits(enc, frame_mbs_only_flag ? 0x1 : 0x0, 1);
|
||||
|
||||
if (!frame_mbs_only_flag)
|
||||
radeon_enc_code_fixed_bits(enc, 0x0, 1); /* mb_adaptive_frame_field_flag */
|
||||
|
||||
radeon_enc_code_fixed_bits(enc, 0x1, 1); /* frame_mbs_only_flag */
|
||||
radeon_enc_code_fixed_bits(enc, 0x1, 1); /* direct_8x8_inference_flag */
|
||||
|
||||
radeon_enc_code_fixed_bits(enc, sps->enc_frame_cropping_flag, 1);
|
||||
|
||||
Reference in New Issue
Block a user