author | Gan 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) |
commit | 1a0867bf76a9022d8f0f84514fb7304a3d7ebfc0 (patch) | |
tree | 57fd6246b26904619cba81f9ca084f70499f1be5 | |
parent | 25e10d31dc37bf82b180d5d64520664df11eca4a (diff) | |
download | media_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>
-rw-r--r-- | drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c | 7 | ||||
-rw-r--r-- | drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c | 7 |
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) { |