summaryrefslogtreecommitdiff
authorHui Zhang <hui.zhang@amlogic.com>2020-09-18 01:51:59 (GMT)
committer Pengfei Zhao <pengfei.zhao@amlogic.com>2020-09-18 06:28:57 (GMT)
commit3a4762e5f183e76d961eed2d3440a253aa696bb4 (patch)
treee15ba551559d0d338cdf7156da7789e5b9d39c47
parente67ceb4a83c200379a518c5c726a4bec1224c251 (diff)
downloadmedia_modules-3a4762e5f183e76d961eed2d3440a253aa696bb4.zip
media_modules-3a4762e5f183e76d961eed2d3440a253aa696bb4.tar.gz
media_modules-3a4762e5f183e76d961eed2d3440a253aa696bb4.tar.bz2
media_module: fix a crash in cts r [1/1]
PD#SWPL-33266 Problem: when a invalid vf being detected in vf_put, there are a lot of printk cause system crash Solution: 1) add valid checkn for dummy vf in vf_put 2) add debug level for invalid vf printk Verify: AC214 Change-Id: I910136a290b95c4c1ca24ad52fb2e5be6e8b6d0b Signed-off-by: Hui Zhang <hui.zhang@amlogic.com>
Diffstat
-rw-r--r--drivers/frame_provider/decoder/h264_multi/vmh264.c2
-rw-r--r--drivers/frame_provider/decoder/h265/vh265.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/frame_provider/decoder/h264_multi/vmh264.c b/drivers/frame_provider/decoder/h264_multi/vmh264.c
index 186b577..7b502a3 100644
--- a/drivers/frame_provider/decoder/h264_multi/vmh264.c
+++ b/drivers/frame_provider/decoder/h264_multi/vmh264.c
@@ -4098,7 +4098,7 @@ static bool vf_valid_check(struct vframe_s *vf, struct vdec_h264_hw_s *hw) {
return true;
for (i = 0; i < VF_POOL_SIZE; i++) {
for (j = 0; j < VF_POOL_NUM; j ++) {
- if (vf == &(hw->vfpool[j][i]))
+ if (vf == &(hw->vfpool[j][i]) || vf == &hw->vframe_dummy)
return true;
}
}
diff --git a/drivers/frame_provider/decoder/h265/vh265.c b/drivers/frame_provider/decoder/h265/vh265.c
index 2389d8f..091935d 100644
--- a/drivers/frame_provider/decoder/h265/vh265.c
+++ b/drivers/frame_provider/decoder/h265/vh265.c
@@ -8389,12 +8389,12 @@ static struct vframe_s *vh265_vf_get(void *op_arg)
static bool vf_valid_check(struct vframe_s *vf, struct hevc_state_s *hevc) {
int i;
for (i = 0; i < VF_POOL_SIZE; i++) {
- if (vf == &hevc->vfpool[i])
+ if (vf == &hevc->vfpool[i] || vf == &hevc->vframe_dummy)
return true;
}
- pr_info(" h265 invalid vf been put, vf = %p\n", vf);
+ hevc_print(hevc, 0," h265 invalid vf been put, vf = %p\n", vf);
for (i = 0; i < VF_POOL_SIZE; i++) {
- pr_info("www valid vf[%d]= %p \n", i, &hevc->vfpool[i]);
+ hevc_print(hevc, PRINT_FLAG_VDEC_STATUS,"valid vf[%d]= %p \n", i, &hevc->vfpool[i]);
}
return false;
}