From 1a0867bf76a9022d8f0f84514fb7304a3d7ebfc0 Mon Sep 17 00:00:00 2001 From: Gan Zhang Date: Wed, 29 Apr 2020 08:30:41 +0000 Subject: 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 --- 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) { -- cgit