vdin: Fix coverity error [1/1]
authorYong Qin <yong.qin@amlogic.com>
Fri, 11 Oct 2019 08:20:58 +0000 (16:20 +0800)
committerTao Zeng <tao.zeng@amlogic.com>
Fri, 11 Oct 2019 09:29:57 +0000 (02:29 -0700)
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>
drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h
drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c
drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c
drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h

index c693adf..802a302 100644 (file)
@@ -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,
 };
index 916b9a0..1eeb843 100644 (file)
@@ -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)) {
index a017b07..6bfab70 100644 (file)
@@ -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;
index 136fb46..4458e0d 100644 (file)
@@ -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