author | Yong Qin <yong.qin@amlogic.com> | 2019-10-11 08:20:58 (GMT) |
---|---|---|
committer | zihuan.ling <zihuan.ling@amlogic.com> | 2019-10-12 01:50:06 (GMT) |
commit | 0619a883c58b158dc9ce2136a1eed112d87e5983 (patch) | |
tree | e662d82ff1a5c8647ef4e1c94ad77f24cc6b5b31 | |
parent | b0083593c450e48038fadda8598ce57be7b030ac (diff) | |
download | common-0619a883c58b158dc9ce2136a1eed112d87e5983.zip common-0619a883c58b158dc9ce2136a1eed112d87e5983.tar.gz common-0619a883c58b158dc9ce2136a1eed112d87e5983.tar.bz2 |
vdin: Fix coverity error [1/1]
PD#SWPL-13987
Problem:
Fix coverity error.
Solution:
Fix coverity error.
Verify:
TL1
Change-Id: I5fec89f8980a4ea9b93e96e56dd857817695ad71
Signed-off-by: Yong Qin <yong.qin@amlogic.com>
-rw-r--r-- | drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h | 18 | ||||
-rw-r--r-- | drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c | 12 | ||||
-rw-r--r-- | drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c | 61 | ||||
-rw-r--r-- | drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h | 2 |
4 files changed, 52 insertions, 41 deletions
diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h b/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h index c693adf..802a302 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h @@ -50,41 +50,41 @@ enum vdin_output_mif_e { */ enum vdin_matrix_csc_e { VDIN_MATRIX_NULL = 0, - VDIN_MATRIX_XXX_YUV601_BLACK, + VDIN_MATRIX_XXX_YUV601_BLACK,/*1*/ VDIN_MATRIX_RGB_YUV601, VDIN_MATRIX_GBR_YUV601, VDIN_MATRIX_BRG_YUV601, - VDIN_MATRIX_YUV601_RGB, + VDIN_MATRIX_YUV601_RGB,/*5*/ VDIN_MATRIX_YUV601_GBR, VDIN_MATRIX_YUV601_BRG, VDIN_MATRIX_RGB_YUV601F, - VDIN_MATRIX_YUV601F_RGB, - VDIN_MATRIX_RGBS_YUV601, + VDIN_MATRIX_YUV601F_RGB,/*9*/ + VDIN_MATRIX_RGBS_YUV601,/*10*/ VDIN_MATRIX_YUV601_RGBS, VDIN_MATRIX_RGBS_YUV601F, VDIN_MATRIX_YUV601F_RGBS, VDIN_MATRIX_YUV601F_YUV601, - VDIN_MATRIX_YUV601_YUV601F, + VDIN_MATRIX_YUV601_YUV601F,/*15*/ VDIN_MATRIX_RGB_YUV709, VDIN_MATRIX_YUV709_RGB, VDIN_MATRIX_YUV709_GBR, VDIN_MATRIX_YUV709_BRG, - VDIN_MATRIX_RGB_YUV709F, + VDIN_MATRIX_RGB_YUV709F,/*20*/ VDIN_MATRIX_YUV709F_RGB, VDIN_MATRIX_RGBS_YUV709, VDIN_MATRIX_YUV709_RGBS, VDIN_MATRIX_RGBS_YUV709F, - VDIN_MATRIX_YUV709F_RGBS, + VDIN_MATRIX_YUV709F_RGBS,/*25*/ VDIN_MATRIX_YUV709F_YUV709, VDIN_MATRIX_YUV709_YUV709F, VDIN_MATRIX_YUV601_YUV709, VDIN_MATRIX_YUV709_YUV601, - VDIN_MATRIX_YUV601_YUV709F, + VDIN_MATRIX_YUV601_YUV709F,/*30*/ VDIN_MATRIX_YUV709F_YUV601, VDIN_MATRIX_YUV601F_YUV709, VDIN_MATRIX_YUV709_YUV601F, VDIN_MATRIX_YUV601F_YUV709F, - VDIN_MATRIX_YUV709F_YUV601F, + VDIN_MATRIX_YUV709F_YUV601F,/*35*/ VDIN_MATRIX_RGBS_RGB, VDIN_MATRIX_RGB_RGBS, }; diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c index 916b9a0..1eeb843 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c @@ -436,6 +436,7 @@ static void vdin_dump_mem(char *path, struct vdin_dev_s *devp) static void vdin_dump_one_afbce_mem(char *path, struct vdin_dev_s *devp, unsigned int buf_num) { + #define K_PATH_BUFF_LENGTH 150 struct file *filp = NULL; loff_t pos = 0; void *buf_head = NULL; @@ -449,7 +450,7 @@ static void vdin_dump_one_afbce_mem(char *path, struct vdin_dev_s *devp, unsigned int count = 0; unsigned int j = 0; void *vbuf = NULL; - unsigned char buff[100]; + unsigned char buff[K_PATH_BUFF_LENGTH]; mm_segment_t old_fs = get_fs(); if (buf_num >= devp->canvas_max_num) { @@ -512,9 +513,14 @@ static void vdin_dump_one_afbce_mem(char *path, struct vdin_dev_s *devp, } set_fs(KERNEL_DS); - /*write header bin*/ - strcpy(buff, path); + + if (strlen(path) < K_PATH_BUFF_LENGTH) { + strcpy(buff, path); + } else { + pr_info("err path len\n"); + return; + } strcat(buff, "_1header.bin"); filp = filp_open(buff, O_RDWR|O_CREAT, 0666); if (IS_ERR(filp)) { diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c index a017b07..6bfab70 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c @@ -2167,15 +2167,16 @@ static void vdin_vlock_dwork(struct work_struct *work) struct vdin_dev_s *devp = container_of(dwork, struct vdin_dev_s, vlock_dwork); - if (!(devp->flags & VDIN_FLAG_DEC_OPENED)) { - cancel_delayed_work(&devp->vlock_dwork); + if (!devp || !devp->frontend || !devp->curr_wr_vfe) { + pr_info("%s, dwork error !!!\n", __func__); return; } - if (!devp || !devp->frontend || !devp->curr_wr_vfe) { - pr_info("%s, dwork error !!!\n", __func__); + if (!(devp->flags & VDIN_FLAG_DEC_OPENED)) { + cancel_delayed_work(&devp->vlock_dwork); return; } + vdin_vlock_input_sel(devp->curr_field_type, devp->curr_wr_vfe->vf.source_type); @@ -2912,30 +2913,33 @@ static long vdin_ioctl(struct file *file, unsigned int cmd, unsigned long arg) } idx = vdinsetcanvas[i].index; + if (idx < VDIN_CANVAS_MAX_CNT) { + vdin_set_canvas_addr[idx].dmabuff = + dma_buf_get(vdinsetcanvas[i].fd); + + vdin_set_canvas_addr[idx].dmabufattach = + dma_buf_attach( + vdin_set_canvas_addr[idx].dmabuff, + devp->dev); + vdin_set_canvas_addr[idx].sgtable = + dma_buf_map_attachment( + vdin_set_canvas_addr[idx].dmabufattach, + DMA_BIDIRECTIONAL); - vdin_set_canvas_addr[idx].dmabuff = - dma_buf_get(vdinsetcanvas[i].fd); - - vdin_set_canvas_addr[idx].dmabufattach = - dma_buf_attach( - vdin_set_canvas_addr[idx].dmabuff, - devp->dev); - vdin_set_canvas_addr[idx].sgtable = - dma_buf_map_attachment( - vdin_set_canvas_addr[idx].dmabufattach, - DMA_BIDIRECTIONAL); - - page = sg_page(vdin_set_canvas_addr[idx].sgtable->sgl); - vdin_set_canvas_addr[idx].paddr = - PFN_PHYS(page_to_pfn(page)); - vdin_set_canvas_addr[idx].size = - vdin_set_canvas_addr[idx].dmabuff->size; - - pr_info("TVIN_IOC_S_CANVAS_ADDR[%d] addr=0x%lx, len=0x%x.\n", - i, - vdin_set_canvas_addr[idx].paddr, - vdin_set_canvas_addr[idx].size); - + page = + sg_page(vdin_set_canvas_addr[idx].sgtable->sgl); + vdin_set_canvas_addr[idx].paddr = + PFN_PHYS(page_to_pfn(page)); + vdin_set_canvas_addr[idx].size = + vdin_set_canvas_addr[idx].dmabuff->size; + + pr_info("TVIN_IOC_S_CANVAS_ADDR[%d] addr=0x%lx, len=0x%x.\n", + i, + vdin_set_canvas_addr[idx].paddr, + vdin_set_canvas_addr[idx].size); + } else { + pr_info("VDIN err canvas idx:%d\n", idx); + } __close_fd(current->files, vdinsetcanvas[i].fd); } break; @@ -2951,7 +2955,8 @@ static long vdin_ioctl(struct file *file, unsigned int cmd, unsigned long arg) return -EFAULT; } - if (devp->keystone_entry[recov_idx]) { + if ((recov_idx < VDIN_CANVAS_MAX_CNT) && + (devp->keystone_entry[recov_idx])) { receiver_vf_put(&devp->keystone_entry[recov_idx]->vf, devp->vfp); devp->keystone_entry[recov_idx] = NULL; diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h index 136fb46..4458e0d 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h @@ -48,7 +48,7 @@ /* Ref.2019/04/25: tl1 vdin0 afbce dynamically switch support, * vpp also should support this function */ -#define VDIN_VER "Ref.2019/09/30:afbce,optimize mem alloc & enable 1080p" +#define VDIN_VER "Ref.2019/10/11:Fix coverify error" /*the counter of vdin*/ #define VDIN_MAX_DEVS 2 |