summaryrefslogtreecommitdiff
authorGan Zhang <gan.zhang@amlogic.com>2020-04-29 08:30:41 (GMT)
committer Tellen Yu <tellen.yu@amlogic.com>2020-08-07 08:00:23 (GMT)
commit1a0867bf76a9022d8f0f84514fb7304a3d7ebfc0 (patch)
tree57fd6246b26904619cba81f9ca084f70499f1be5
parent25e10d31dc37bf82b180d5d64520664df11eca4a (diff)
downloadmedia_modules-amlogic-4.9-dev_forQ_backup0812.zip
media_modules-amlogic-4.9-dev_forQ_backup0812.tar.gz
media_modules-amlogic-4.9-dev_forQ_backup0812.tar.bz2
media: fix mpeg4 and mjpeg crash in VTS test. [1/1]
PD#SWPL-29450 Problem: The variable(hw->platform_dev) is null when used in DECODE_ID(hw). Solution: Initialize the variable(hw->platform_dev) before use. Verify: U212 Change-Id: Icdc43efd424e2a3ae61e82aa2b46d4b5f4f060c5 Signed-off-by: Gan Zhang <gan.zhang@amlogic.com>
Diffstat
-rw-r--r--drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c7
-rw-r--r--drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c7
2 files changed, 7 insertions, 7 deletions
diff --git a/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c b/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c
index 493231b..247d188 100644
--- a/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c
+++ b/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c
@@ -1450,6 +1450,9 @@ static int ammvdec_mjpeg_probe(struct platform_device *pdev)
snprintf(pdata->vf_provider_name, VDEC_PROVIDER_NAME_SIZE,
PROVIDER_NAME ".%02x", pdev->id & 0xff);
+ platform_set_drvdata(pdev, pdata);
+ hw->platform_dev = pdev;
+
if (((debug_enable & IGNORE_PARAM_FROM_CONFIG) == 0) && pdata->config_len) {
mmjpeg_debug_print(DECODE_ID(hw), 0, "pdata->config: %s\n", pdata->config);
if (get_config_int(pdata->config, "parm_v4l_buffer_margin",
@@ -1466,10 +1469,6 @@ static int ammvdec_mjpeg_probe(struct platform_device *pdev)
vf_provider_init(&pdata->vframe_provider, pdata->vf_provider_name,
&vf_provider_ops, pdata);
- platform_set_drvdata(pdev, pdata);
-
- hw->platform_dev = pdev;
-
if (pdata->sys_info) {
hw->vmjpeg_amstream_dec_info = *pdata->sys_info;
hw->is_used_v4l = (((unsigned long)
diff --git a/drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c b/drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c
index c098a5e..15508f8 100644
--- a/drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c
+++ b/drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c
@@ -2288,9 +2288,12 @@ static int ammvdec_mpeg4_probe(struct platform_device *pdev)
snprintf(pdata->vf_provider_name, VDEC_PROVIDER_NAME_SIZE,
PROVIDER_NAME ".%02x", pdev->id & 0xff);
+ platform_set_drvdata(pdev, pdata);
+ hw->platform_dev = pdev;
if (((debug_enable & IGNORE_PARAM_FROM_CONFIG) == 0) && pdata->config_len) {
- mmpeg4_debug_print(DECODE_ID(hw), 0, "pdata->config: %s\n", pdata->config);
+ mmpeg4_debug_print(DECODE_ID(hw), PRINT_FLAG_RUN_FLOW,
+ "pdata->config: %s\n", pdata->config);
if (get_config_int(pdata->config, "parm_v4l_buffer_margin",
&config_val) == 0)
hw->dynamic_buf_num_margin = config_val;
@@ -2310,8 +2313,6 @@ static int ammvdec_mpeg4_probe(struct platform_device *pdev)
vf_provider_init(&pdata->vframe_provider,
pdata->vf_provider_name, &vf_provider_ops, pdata);
- platform_set_drvdata(pdev, pdata);
- hw->platform_dev = pdev;
hw->blkmode = pdata->canvas_mode;
if (pdata->sys_info) {