author | Gan Zhang <gan.zhang@amlogic.com> | 2020-04-29 08:30:41 (GMT) |
---|---|---|
committer | Hui Zhang <hui.zhang@amlogic.com> | 2020-05-01 13:53:49 (GMT) |
commit | b082c6a5e96f31f23cf510c5b3568c160af29c2a (patch) | |
tree | 013aa83c0af369dd3830e89753173d2964ef9f4e | |
parent | 0c91ad676115c5acd2219754ecbaca85c69e60f1 (diff) | |
download | media_modules-b082c6a5e96f31f23cf510c5b3568c160af29c2a.zip media_modules-b082c6a5e96f31f23cf510c5b3568c160af29c2a.tar.gz media_modules-b082c6a5e96f31f23cf510c5b3568c160af29c2a.tar.bz2 |
media: fix mpeg4 and mjpeg crash in VTS test. [1/1]
PD#SWPL-25004
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 | 4 |
2 files changed, 5 insertions, 6 deletions
diff --git a/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c b/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c index 5ed8f1c..33b787a 100644 --- a/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c +++ b/drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c @@ -1473,6 +1473,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", @@ -1497,10 +1500,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 9f9485c..9fd271c 100644 --- a/drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c +++ b/drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c @@ -2331,6 +2331,8 @@ 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); @@ -2361,8 +2363,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) { |