summaryrefslogtreecommitdiff
path: root/drivers/mxc
diff options
context:
space:
mode:
authorShijie Qin <shijie.qin@nxp.com>2019-08-23 15:27:21 +0800
committerShijie Qin <shijie.qin@nxp.com>2019-08-23 18:44:06 +0800
commit9d6213a22210b2584484d2884dfac52ff913337d (patch)
treef731d780510c4c7c25e4aba1ba1e2da4ce2f5861 /drivers/mxc
parent9ded8e7d415e64175ccf46ae3bfb28a6b7a8986c (diff)
MLK-22464 VPU Decoder: [MX8QM] vpu issue in coverity kernel scan
1. CID 6371811: Dereference before null check (REVERSE_INULL) 2. CID 6371006: Unchecked return value (CHECKED_RETURN) Signed-off-by: Shijie Qin <shijie.qin@nxp.com> Reviewed-by: ming_qian <ming.qian@nxp.com> (cherry picked from commit db710e3ab8b6aca3bd589c7d2d4c45b2bc2b9ef3)
Diffstat (limited to 'drivers/mxc')
-rw-r--r--drivers/mxc/vpu_malone/vpu_b0.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/drivers/mxc/vpu_malone/vpu_b0.c b/drivers/mxc/vpu_malone/vpu_b0.c
index 4c9afee6be3e..12f5a8b2b9dd 100644
--- a/drivers/mxc/vpu_malone/vpu_b0.c
+++ b/drivers/mxc/vpu_malone/vpu_b0.c
@@ -895,10 +895,18 @@ void check_fuse_value(struct vpu_dev *dev,
u_int32 fuse;
u_int32 val;
u_int32 i;
+ sc_err_t ret;
if (!dev)
return;
- sc_misc_otp_fuse_read(dev->mu_ipcHandle, VPU_DISABLE_BITS, &fuse);
+
+ ret = sc_misc_otp_fuse_read(dev->mu_ipcHandle, VPU_DISABLE_BITS, &fuse);
+ if (ret) {
+ vpu_dbg(LVL_WARN, "warning: %s() read value fail: %d\n",
+ __func__, ret);
+ return;
+ }
+
val = (fuse >> 2) & 0x3UL;
if (val == 0x1UL) {
for (i = 0; i < table_size; i++)
@@ -4944,7 +4952,7 @@ static int vpu_firmware_download(struct vpu_dev *This)
This->generic_dev
);
- if (ret) {
+ if (ret || !This->m0_pfw) {
vpu_err("error: %s() request fw %s failed(%d)\n",
__func__, M0FW_FILENAME, ret);
@@ -4952,14 +4960,15 @@ static int vpu_firmware_download(struct vpu_dev *This)
release_firmware(This->m0_pfw);
This->m0_pfw = NULL;
}
+
return ret;
- } else {
- vpu_dbg(LVL_INFO, "%s() request fw %s got size(%d)\n",
- __func__, M0FW_FILENAME, (int)This->m0_pfw->size);
- image = (uint8_t *)This->m0_pfw->data;
- FW_Size = This->m0_pfw->size;
}
+ vpu_dbg(LVL_INFO, "%s() request fw %s got size(%d)\n",
+ __func__, M0FW_FILENAME, (int)This->m0_pfw->size);
+ image = (uint8_t *)This->m0_pfw->data;
+ FW_Size = This->m0_pfw->size;
+
cleanup_firmware_memory(This);
memcpy(This->m0_p_fw_space_vir, image, FW_Size);
@@ -4968,10 +4977,8 @@ static int vpu_firmware_download(struct vpu_dev *This)
enable_csr_reg(This);
This->need_cleanup_firmware = true;
- if (This->m0_pfw) {
- release_firmware(This->m0_pfw);
- This->m0_pfw = NULL;
- }
+ release_firmware(This->m0_pfw);
+ This->m0_pfw = NULL;
return ret;
}